0

只是想知道为什么下面的代码不会遍历
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
} ?>
4

1 回答 1

0

from 的返回值getElementsByTagName()是一个DOMNodeList object,而不是一个数组:一个DOMNodeListobject 是Traversable,所以 aforeach()将遍历它;但array_walk()需要一个实际的数组参数,因此不能与array_walk().

array_walk()使用不是数组的参数调用不会产生错误,但会产生警告,并且会返回 boolean 的结果false

于 2015-10-05T15:15:46.287 回答