我正在尝试计算
DOMNode
的孩子。当我使用 count
与遍历或 ->length
属性时,它似乎给出了错误的结果。就好像文本节点没有被计算在内。
考虑
<?php
$html = '<p>with <a>link</a> text</p>';
$dom = new DOMDocument();
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$paragraph = $dom->firstChild;
$count = 0;
foreach ($paragraph->childNodes as $childNode) {
$count++;
}
echo count($paragraph->childNodes) . "\n";
echo $paragraph->childNodes->length . "\n";
echo $count . "\n";
输出为:
1
3
3
这是
Countable
实现 DOMNodeList
中的错误吗?
据我所知,
count()
中的DOMNodeList
不会计算节点列表中的项目数。相反,它将返回 1,表明该对象是奇异的。 (在某些 PHP 版本中,它可能返回 0)。
另一方面,
length
的DOMNodeList
属性是获取列表中节点数量的正确且可靠的方法。