如何计算 DOMNodeList 中的子节点数量? PHP

问题描述 投票:0回答:1

我正在尝试计算

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
中的错误吗?

php domdocument
1个回答
0
投票

据我所知,

count()
中的
DOMNodeList
不会计算节点列表中的项目数。相反,它将返回 1,表明该对象是奇异的。 (在某些 PHP 版本中,它可能返回 0)。

另一方面,

length
DOMNodeList
属性是获取列表中节点数量的正确且可靠的方法。

© www.soinside.com 2019 - 2024. All rights reserved.