2

如何将 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 并根据迭代器值附加正确的电话。

4

3 回答 3

4

您必须将数据转换为数组,因此请尝试一下(它对我有用)。

$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;
}

虽然这不能被外循环访问。

于 2013-11-07T13:51:16.773 回答
2

您是否尝试过:

$sxElement->phone[0]->__toString();

希望有帮助。

问候,

马塞洛

于 2013-11-07T14:11:26.387 回答
1

当我想使用数组时,我在使用 simpleXML 时发现的一种解决方案是使用json_decode(). 然后我有一个关联数组,它更像是我习惯使用的。

于 2013-11-07T13:50:14.473 回答