如果格式如下,其中c是我必须在每次迭代中预设的对象数组:
$a->b->c
我做了:
$z = $a->b
foreach($z as $key => $value)
echo $value['field'];
$ key出现为null,即使我有有效值。如何获取对象的名称?
答案 0 :(得分: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's manual。
答案 1 :(得分: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数据,并输出您愿意得到吗?)
上引用手册页如果将对象转换为数组, 结果是一个数组的元素 是对象的属性。
键 是成员变量名,带有 几个值得注意的例外:整数 物业是无法进入的;私人的 变量具有类名 前置于变量名称; 受保护的变量有'*' 前缀为变量名。