2016-10-28 8 views
3

は、私はそれはラインは一見不要の理由であるかもしれない何

$obj = $xml; 

と同等であることのように見えます

$obj = json_decode(json_encode($xml)); 

$xmlは私にとてもsimplexml_load_stringからである次の行をいくつかのコードを読んで、見ましたエンコードとデコード?

+0

場合'json_decode'の2番目の引数がtrueとして渡されました。これは、SimpleXMLElementをPHP配列に変換するのに十分な方法です。それが現れてくると、stdClassに変わりますが、これは多かれ少なかれ無意味です。 – iainn

+2

実際には、stdClassのオブジェクトの代わりに連想配列を返すために、json_decodeの2番目のパラメータをtrueに設定する必要があります。それ以外は、@ iainnが正しいです。 –

+0

"は' $ obj = $ xml; '"と同じように見えます - あなたが見ているコードを実行しただけでは真ではありません;-) –

答えて

4

$xmlSimpleXmlのオブジェクトの場合、その属性の一部に直接アクセスすることはできません。これは、古典的なオブジェクトにSimpleXmlオブジェクトを変換し、そのすべての属性にアクセスするために使用されているトリックです:)

また、あなたの代わりにオブジェクトの配列を取得するには、ブールパラメータを渡すことができます。json_decode(json_encode($xml), true);

+0

SimpleXMLはいくつかの属性にアクセスできません。 – iainn

+0

SimpleXmlでは、$ xml-> getChildrens()などのメソッドを使用する必要があります。これは、正しい関数を検索するための時間を避けるためのトリックです。$ xml-> myattributes ドキュメントhttp://php.net/manual/fr/book.simplexml.php – Fky