PHP';s SimpleXMLElement::children()返回?
根据报告: 返回SimpleXMLElement元素,无论节点是否有子节点 但首先,这对我来说没有意义。children()肯定会返回一个simplexmlements数组。如果节点有多个子节点,那么返回单个SimpleXMLElement如何表示这一点 其次,这与手册中的示例不符:PHP';s SimpleXMLElement::children()返回?,php,simplexml,Php,Simplexml,根据报告: 返回SimpleXMLElement元素,无论节点是否有子节点 但首先,这对我来说没有意义。children()肯定会返回一个simplexmlements数组。如果节点有多个子节点,那么返回单个SimpleXMLElement如何表示这一点 其次,这与手册中的示例不符: foreach ($xml->children() as $second_gen) echo ' The person begot a ' . $second_gen['role']; 您如何通过Si
foreach ($xml->children() as $second_gen)
echo ' The person begot a ' . $second_gen['role'];
您如何通过SimpleXMLElement进行访问?我以为你只能用数组来做?还有,$second_gen的值到底是怎么回事?那么children()返回一个关联数组的数组
这里一定有一些我不知道的很深的PHP语法规则,所以请给我解释一下或指向相关的手册页。为什么不自己试试():
输出
object(SimpleXMLElement)#4 (0) {}
object(SimpleXMLElement)#2 (1) {
["baz"]=>
array(3) {
[0]=>
object(SimpleXMLElement)#3 (0) {
}
[1]=>
object(SimpleXMLElement)#5 (0) {
}
[2]=>
object(SimpleXMLElement)#6 (0) {
}
}
}
那就做吧
var_dump($foo->bar->baz[0]->children());
var_dump($foo->bar->children());
输出
object(SimpleXMLElement)#4 (0) {}
object(SimpleXMLElement)#2 (1) {
["baz"]=>
array(3) {
[0]=>
object(SimpleXMLElement)#3 (0) {
}
[1]=>
object(SimpleXMLElement)#5 (0) {
}
[2]=>
object(SimpleXMLElement)#6 (0) {
}
}
}
您如何通过SimpleXMLElement进行访问?我以为你只能用数组来做
嗯,那是错误的。您可以foreach任何可遍历对象(例如对象和数组等)和实现迭代器接口的任何对象。这是simplexmlement
Class [ <internal:SimpleXML> <iterateable> class SimpleXMLElement implements Traversable ] {
这有点不明显,因为simplexmlement
没有实现ArrayAccess
,但它是这样的。有关更多示例,请参见手册中的。
注意:SimpleXML制定了一条规则,将迭代属性添加到大多数
方法。不能使用var_dump()或任何其他
可以检查对象
这仅仅意味着返回的对象可以被迭代。因此,即使给定一个对象,也可以对其进行迭代
只需查看类定义:
(请注意,它实现了)
因为您遍历的每个对象本身就是一个SimpleXML对象,所以您只需对其调用
children()
,就可以更深一层 @JohnP因为是周末;)