2015-08-24 87 views
1

我想知道是否在PHP 5.6.11存在與迭代的SimpleXMLElement通過以下兩種方式有什麼區別:SimpleXMLElement PHP for和foreach循環之間的區別?

$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

它將調用內部的相同的邏輯目的。 Iterator是一個可以實現到自己的對象中的接口。該接口指定像rewind()next()current() ...

方法,如果實現該對象可以與foreach()使用的接口。 foreach()識別接口並調用方法。

SimpleXMLIterator實現該接口,更具體它實現RecursiveIterator延伸Iterator兩種方法(hasChildren()getChildren()處理遞歸結構

+0

謝謝您的回答:你已經解釋的foreach位,但你可以也請解釋爲什麼for循環不能和foreach循環一樣?爲什麼不是兩個同樣的東西呢?謝謝。 –

+0

你是什麼意思?「它會在對象內部調用相同的邏輯。」 – ThW

+0

也許與foreach循環不同的是,您只能訪問被遍歷的Traversable對象封裝的元素,而使用for循環則無法使用我也可以訪問循環內部的Traversable對象。如果代碼也需要調用封閉遍歷對象上的方法,後者可能是有利的。謝謝。 –

相關問題