просто интересно, почему следующий код не itterate через
DOMDocument :: getElementsByTagNamePHP Почему array_walk не работает с 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' __объектом__, а не' array'; это 'Traversable', поэтому' foreach' будет работать, но 'array_walk()' требует фактического аргумента массива –
@MarkBaker, это ответ ... –
@MarkBaker смешно, что 'array_walk' не генерирует ошибку при вызове с не-массив, нет? –