Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:json_解码(json_编码($xml));_Php - Fatal编程技术网

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一样使用。请参阅文档