我想知道在PHP 5.6.11中,以下两种使用SimpleXMLElement迭代的方法之间是否存在任何差异:
$simpleXMLIterator = new SimpleXMLIterator($xmlCode);
foreach ($simpleXMLIterator as $xmlElement) {
echo $xmlElement->getName(), "\n";
}
和
$simpleXMLIterator = new SimpleXMLIterator($xmlCode);
for ($simpleXMLIterator->rewind(); $simpleXMLIterator->valid(); $simpleXMLIterator->next()) {
echo $simpleXMLIterator->current()->getName(), "\n";
}
答案 0 :(得分:1)
它将在对象内部调用相同的逻辑。 Iterator
是一个可以在您自己的对象中实现的接口。该接口指定了rewind()
,next()
,current()
,...
如果您实现了界面,则该对象可以与foreach()
一起使用。 foreach()
识别接口并调用方法。
SimpleXMLIterator
实现了该接口,更具体的是它实现了RecursiveIterator
,它使用两个方法(Iterator
和hasChildren()
扩展getChildren()
来处理递归结构。