Разница между SimpleXMLElement PHP для и циклами foreach?

1

Я хотел бы знать, существует ли в 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";

}
Теги:
for-loop
iterator
foreach

1 ответ

1

Он будет вызывать одну и ту же логику внутри объекта. Iterator - это интерфейс, который можно реализовать в своих собственных объектах. Интерфейс задает такие методы, как rewind(), next(), current() ,...

Если вы реализуете интерфейс, объект может использоваться с foreach(). foreach() распознает интерфейс и вызывает методы.

SimpleXMLIterator реализует этот интерфейс, более конкретный он реализует RecursiveIterator который расширяет Iterator двумя способами (hasChildren() и getChildren() для обработки рекурсивных структур.

  • 0
    Спасибо за ваш ответ: вы объяснили немного foreach. Но не могли бы вы также объяснить, почему цикл for не может работать так же, как цикл foreach? Почему два не одно и то же? Благодарю.
  • 0
    Что вы имеете в виду? «Это вызовет ту же логику внутри объекта».
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню