只是想知道为什么下面的代码没有通过
进行itterate
DOM文档::的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 :(得分:0)
getElementsByTagName()
的返回值是DOMNodeList
对象,而不是数组:DOMNodeList
对象为Traversable
,因此{{1} 1}}将迭代它;但foreach()
需要实际的数组参数,因此不能与array_walk()
一起使用。
使用非数组的参数调用array_walk()
不会生成错误,但会生成警告,并返回布尔值array_walk()
的结果。