为什么这些Xpath元素不是一个数组?

时间:2014-08-06 22:14:36

标签: php arrays xpath

所以这在foreach中工作正常,我认为$ elements是一个数组......

$DOM = new DOMDocument(); 
$DOM->loadHTML($content);
$xpath = new DOMXPath($DOM);
$elements= $xpath->query('//li');

foreach($elements as $element){
    $newdoc = new DOMDocument();
    $cloned = $element->cloneNode(TRUE);
    $newdoc->appendChild($newdoc->importNode($cloned,TRUE));
    $lis .= $newdoc->saveHTML();
}

但是这个

if ($elements[0]) {
    echo $elements[0]->nodeValue;   
}

提供Cannot use object of type DOMNodeList as array

foreach()没有类方法所以为什么它在DOMNodeList上运行,好像它是一个数组,显然它不是一个?

2 个答案:

答案 0 :(得分:1)

在php文档中完全解释了这一点:DOMNodeList类实现了Iterator接口,允许在该类的对象上使用foreach

请注意,您可以使用item方法按索引访问列表中的任何元素:

$elements->item(0)->nodeValue

答案 1 :(得分:0)

我的猜测是php的foreach函数知道如何迭代除了数组之外的对象,但是从DomNodeList获取数组方面,请使用:

$arr = [];
foreach ($elements as $element) {
    $arr[] = $element;
}
echo $arr[0]->nodeValue;