Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么不';这些Xpath元素不是数组吗?_Php_Arrays_Xpath - Fatal编程技术网

Php 为什么不';这些Xpath元素不是数组吗?

Php 为什么不';这些Xpath元素不是数组吗?,php,arrays,xpath,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-

所以这在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;   
}
给定
不能将DOMNodeList类型的对象用作数组


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

php文档对此进行了完美的解释:该类实现了接口,允许在该类的对象上使用

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

$elements->item(0)->nodeValue

我猜想php的foreach函数知道如何迭代数组以外的对象,但要从DomNodeList获取数组,请使用以下方法:

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

非常感谢。我会仔细看看这些文件。首次使用DOMDocument和Xpath