просто интересно, почему следующий код не пройти через
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
} ?>
Возвращаемое значение из getElementsByTagName()
это DOMNodeList
объект, не массив: DOMNodeList
объект Traversable
так foreach()
будет перебирать его; но array_walk()
требует фактический аргумент массива, поэтому его нельзя использовать с array_walk()
,
призвание array_walk()
с аргументом, который не является массивом, не сгенерирует ошибку, но сгенерирует предупреждение и вернет логический результат false
,
Других решений пока нет …