PHP:json_解码(json_编码($xml));
我正在读一些代码,看到了下面这行代码PHP:json_解码(json_编码($xml));,php,Php,我正在读一些代码,看到了下面这行代码 $obj = json_decode(json_encode($xml)); $xml来自simplexml\u load\u string,因此在我看来,该行与 $obj = $xml; 似乎不必要的编码和解码的原因可能是什么?如果$xml是SimpleXml对象,则无法直接访问其某些属性。这是一个用于将SimpleXml对象转换为经典对象并访问其所有属性的技巧:) 此外,您还可以传递一个布尔参数来获取数组而不是对象:json\u decode(js
$obj = json_decode(json_encode($xml));
$xml
来自simplexml\u load\u string
,因此在我看来,该行与
$obj = $xml;
似乎不必要的编码和解码的原因可能是什么?如果
$xml
是SimpleXml
对象,则无法直接访问其某些属性。这是一个用于将SimpleXml
对象转换为经典对象并访问其所有属性的技巧:)
此外,您还可以传递一个布尔参数来获取数组而不是对象:
json\u decode(json\u encode($xml),true)
如果json\u decode
的第二个参数被传递为true,那么将SimpleXMLElement转换为PHP数组已经足够好了。目前,这将它转换为stdClass,这或多或少是毫无意义的。实际上,它需要将json_decode的第二个参数设置为true,以便返回关联数组而不是stdClass的对象。除此之外,@iainn是对的。“看起来这行代码相当于$obj=$xml;
”-如果您只是运行代码,您将看到它不是真的;-)在什么情况下SimpleXML不能访问某些属性?使用SimpleXML,您需要使用it类的方法,如$xml->getChildrens()等,这只是一个避免花费时间搜索正确函数的技巧,它更容易像经典对象$xml->myattributes一样使用。请参阅文档