如何将SimpleXMLElement子元素作为数组访问?
SimpleXMLElement(9) {
name => "John" (11)
phone => array(2) [
0 => "556 221 000" (19)
1 => "312 555 110" (19)
]
}
根据这篇文章http://www.sitepoint.com/parsing-xml-with-simplexml/,我应该通过
轻松访问它$sxElement->phone[0];
但是转储只返回:
SimpleXMLElement(0)
我需要在for循环中访问它。感谢。
编辑(XML示例):
<company>
<phonebook>
<name>John</name>
<phone>556 221 000</phone>
<phone>312 555 110</phone>
</phonebook>
</company>
我需要通过我的foreach在另一个对象上,并根据迭代器值附加正确的手机。
答案 0 :(得分:3)
你必须将数据转换为数组,所以试试这个(它对我有用)。
$el = new SimpleXMLElement(
'<company>
<phonebook>
<name>John</name>
<phone>556 221 000</phone>
<phone>312 555 110</phone>
</phonebook>
</company>'
);
$array = (array) $el->phonebook->phone;
这个输出是array
准备好进行操作。
Array
(
[0] => 556 221 000
[1] => 312 555 110
)
另一种获取密钥的方法。
foreach($sxElement->phone as $i => $value) {
echo "{$i} : {$value}" . PHP_EOL;
}
虽然外循环无法访问它。
答案 1 :(得分:1)
您是否尝试过:
$sxElement->phone[0]->__toString();
希望有所帮助。
此致
马塞洛
答案 2 :(得分:0)
当我想使用数组时,我在使用simpleXML时找到的一个解决方案是使用json_decode()
中的“true”参数将整个事物传入和传出json。然后我有一个关联数组,这是我习惯使用的更多。