所以这在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上运行,好像它是一个数组,显然它不是一个?
答案 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;