PHP为什么array_walk不能与DOMDocument::getElementsByTagName一起使用

PHP为什么array_walk不能与DOMDocument::getElementsByTagName一起使用,php,domdocument,array-walk,Php,Domdocument,Array Walk,只是想知道为什么下面的代码无法通过 DOMDocument::getElementsByTagName <?php $dom = new DOMDocument(); $dom->preserveWhiteSpace = false; $dom->loadHTML('<html><head>...blablabla...</html>'); $elements = $dom->getElementsByTagName('div'); a

只是想知道为什么下面的代码无法通过
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 ?>

来自
getElementsByTagName()
的返回值是一个
DOMNodeList
对象,而不是一个数组:一个
DOMNodeList
对象是可遍历的,因此一个
foreach()
将对其进行迭代;但是
array\u walk()
需要实际的数组参数,因此不能与
array\u walk()
一起使用


使用非数组的参数调用
array\u walk()
不会生成错误,但会生成警告,并返回布尔值
false

的结果
getElementsByTagName()
的返回值是
DOMNodeList
对象,而不是
array
;它是
可遍历的
,因此
foreach
可以工作,但是
array\u walk()
需要实际的数组argument@MarkBaker这就是答案。@MarkBaker有趣的是,
array\u walk
在使用非数组调用时不会生成错误,否?来自PHP文档:
成功时返回TRUE,失败时返回FALSE。
,但如果您启用了错误日志记录,它也会发出警告-@MarkBaker您可以将此添加为答案。我愿意接受这一回答。虽然我期望PHP生成一个错误,但它没有。(也许应该更好地阅读php手册中的array_walk):)谢谢,Paul Crovella说过array_walk可以迭代对象属性,这就是我尝试array_walk的原因。有趣的观察@PaulCrovella,这对我来说是个新发现。。。。有趣的是,它仍然在PHP7中,但不在HHVM中
<?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
} ?>