考虑以下 PHP 代码
<?php
$html_data =
'<html><body>
<ol>
<li><strong>Question 1</strong> Answer1</li>
<li><strong>Question 2</strong> Answer2</li>
</ol></body></html>';
$doc = new DOMDocument();
$doc->loadHTML($html_data);
$xpath = new DOMXPath($doc);
$ols = $xpath->query('//ol');
$ol = $ols->item(0);
$lis = $ol->childNodes;
foreach ($lis as $li) {
echo $li->firstChild->nodeValue."<br />";
echo $li->lastChild->nodeValue."<br />";
//echo $li->childNodes->item(0)->nodeValue."<br />";
}
?>
如果我删除此代码最后一行的注释并访问 childNodes DOM 对象数组,我的 foreach 循环只会执行一次。但是,如果我使用 firstChild 和 lastChild 访问相同的元素,如上所示,我可以成功地遍历所有存在的“li”标签。
我完全无法理解这一点。这是PHP中的错误吗?