我的函数simplexml_load_string有问题。我想将XML字符串转换为数组。有我的剧本:
$xml_string = file_get_contents($xml_file_name, LIBXML_NOCDATA);
$xml = simplexml_load_string($xml_string, null, LIBXML_NOCDATA);
$xml = json_decode(json_encode($xml), true);
这是我的XML文件的一部分:
<p id="1">test1</p>
<p id="2">test2</p>
<p id="3">test3</p>
<p id="5">test5</p>
<p id="10">test10</p>
<p id="13">test13</p>
转换后,我的数组看起来像这样:
array(6) {
[0]=>
string(10) "test1"
[1]=>
string(18) "test2"
[2]=>
string(24) "test3"
[3]=>
string(24) "test5"
[4]=>
string(11) "test10"
[5]=>
string(9) "test13"
}
现在,看看索引。之前转换索引是:1,2,3,5,10,13.转换后,我得到:0,1,2,3,4,5。哪里有问题?为什么这些索引按函数simplexml_load_string重命名?
感谢。
答案 0 :(得分:1)
你必须明白你在这里做了什么。在调用simplexml_load_string
后,您有一个SimpleXMLElement
类型的对象。
http://php.net/manual/function.simplexml-load-string.php http://php.net/manual/class.simplexmlelement.php
此对象包含XML中的所有信息,包括id- 属性。
如果你对json_encode
和json_decode
对象删除了属性,那么SimpleXMLElement的JSON表示最有可能抛弃属性。
好的,你要做的是:你想将SimpleXMLElement
强制转换为一个数组而不丢失属性数据。有很多可能性,包括自定义实现。
但我想你应该在这里找到答案: