【发布时间】:2009-10-06 20:03:42
【问题描述】:
如果格式如下,其中 c 是一个对象数组,我必须在每次迭代中遍历:
$a->b->c
我愿意:
$z = $a->b
foreach($z as $key => $value)
echo $value['field'];
$key 出现为空,即使我有有效值。如何获取对象的名称?
【问题讨论】:
如果格式如下,其中 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's manual 以获取更多参考。
【讨论】:
考虑以下 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 数据,以及您的输出会愿意得到吗?)
引用手册页,Converting to array section:
如果一个对象被转换为一个数组, 结果是一个数组,其元素 是对象的属性。
键 是成员变量名称,带有 几个值得注意的例外:整数 属性不可访问;私人的 变量具有类名 附加在变量名前; 受保护的变量有一个'*' 附加到变量名。
【讨论】: