PHP Почему array_walk не работает с DOMDocument :: getElementsByTagName

просто интересно, почему следующий код не пройти через
DOMDocument :: getElementsByTagName

<?php
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML('<html><head>...blablabla...</html>');
$elements = $dom->getElementsByTagName('div');
array_walk($elements, 'var_dump'); // doesn't work ?>

Но следующий код делает Работа:

<?php
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML('<html><head>...blablabla...</html>');
$elements = $dom->getElementsByTagName('div');
foreach($elements as $element) {
var_dump($element); // does work
} ?>

0

Решение

Возвращаемое значение из getElementsByTagName() это DOMNodeList объект, не массив: DOMNodeList объект Traversableтак foreach() будет перебирать его; но array_walk() требует фактический аргумент массива, поэтому его нельзя использовать с array_walk(),

призвание array_walk() с аргументом, который не является массивом, не сгенерирует ошибку, но сгенерирует предупреждение и вернет логический результат false,

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector