如果格式如下,其中 c 是我必须在每次迭代中遍历的对象数组:
$a->b->c
我这样做:
$z = $a->b
foreach($z as $key => $value)
echo $value['field'];
$key 出现为空,即使我有有效值。如何获取对象的名称?
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 的手册以获取更多参考。
考虑以下 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 数据,以及您愿意获得的输出吗? )
在转换为数组部分引用手册页:
如果将对象转换为数组,则结果是一个数组,其元素是对象的属性。
键是成员变量名,有几个值得注意的例外:整数属性不可访问;私有变量在变量名前面加上类名;受保护的变量在变量名前有一个“*”。