0

如果格式如下,其中 c 是我必须在每次迭代中遍历的对象数组:

$a->b->c

我这样做:

$z = $a->b
foreach($z as $key => $value)
echo $value['field'];

$key 出现为空,即使我有有效值。如何获取对象的名称?

4

2 回答 2

6

XML:

<a>
  <b>
    <c />
    <d />
    <e />
  </b>
</a>

PHP代码:

$xml = new SimpleXMLElement($file_url, true);
foreach($xml->b->children() as $node) {
    echo $node->getName() . "\n";
}

会给你:

c
d
b

请参阅PHP 的手册以获取更多参考。

于 2009-10-06T20:18:26.877 回答
2

考虑以下 XML 和使用 SimpleXML 加载它的代码:

$str = <<<XML
<root>
    <a>
        <b>
            <c>glop</c>
            <d>test</d>
        </b>
    </a>
</root>
XML;
$xml = simplexml_load_string($str);

您可以“投射”$xml->a->b到一个数组,以便能够对其进行迭代:

foreach ((array)$xml->a->b as $name => $value) {
    echo "$name : $value<br />";
}

你会得到这样的输出:

c : glop
d : test

(可能与您的 XML 字符串不完全相同,但我希望这会帮助您找到解决方案——如果是,您可以编辑您的问题以向我们展示 XML 数据,以及您愿意获得的输出吗? )

转换为数组部分引用手册页:

如果将对象转换为数组,则结果是一个数组,其元素是对象的属性。
键是成员变量名,有几个值得注意的例外:整数属性不可访问;私有变量在变量名前面加上类名;受保护的变量在变量名前有一个“*”。

于 2009-10-06T20:07:43.263 回答