SimpleXMLElement PHP for和foreach循环之间的区别?

时间:2015-08-24 16:50:47

标签: php xml for-loop foreach iterator

我想知道在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";

}

1 个答案:

答案 0 :(得分:1)

它将在对象内部调用相同的逻辑。 Iterator是一个可以在您自己的对象中实现的接口。该接口指定了rewind()next()current(),...

等方法

如果您实现了界面,则该对象可以与foreach()一起使用。 foreach()识别接口并调用方法。

SimpleXMLIterator实现了该接口,更具体的是它实现了RecursiveIterator,它使用两个方法(IteratorhasChildren()扩展getChildren()来处理递归结构。