请考虑以下 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中的一个错误吗?