php - 以数组形式访问 SimpleXMLElement 子元素

标签 php simplexml

如何访问作为数组的 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];

但是 dump 只返回:

SimpleXMLElement(0)

我需要在 for 循环中访问它。谢谢。

编辑(XML 示例):

<company>
  <phonebook>
    <name>John</name>
    <phone>556 221 000</phone>
    <phone>312 555 110</phone>
  </phonebook>
</company>

我需要在另一个对象上遍历我的 foreach 并根据迭代器值附加正确的手机。

最佳答案

您必须将数据转换为数组,所以试试这个(它对我有用)。

$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
(
    [0] => 556 221 000
    [1] => 312 555 110
)

另一种获取 key 的方法。

foreach($sxElement->phone as $i => $value) {
    echo "{$i} : {$value}" . PHP_EOL;
}

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

关于php - 以数组形式访问 SimpleXMLElement 子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837462/

相关文章:

php - 如何使用 SimpleXML 检查元素是否存在?

PHP 从 SimpleXMLElement 数组中获取值

php - 我如何在 PHP 中循环遍历 SimpleXML 对象

javascript - 面向个人用户的带有 Node.js 和 Socket.io 的 Pubsub

php - 自动填充用户名和密码

php - 我想使用 php 在 css 中的每个元素中添加我的类名

php - SimpleXML - echo/print_r 返回不同的值

php - simpleXml 到数组的行为对我来说很奇怪,并且在 9941 项处中断

php - 比较2个表中的2个字段并提取数据

php - 如何将大查询拆分为小查询并将它们作为单个查询附加