为什么(数组)不起作用?因为DOMNodeList对象只有一个属性length,而且它是整数类型:
如果将对象转换为数组,则结果是一个数组,其元素是对象的属性。键是成员变量名称,有一些值得注意的例外:整数属性是不可访问的;私有变量在变量名前面加上类名;受保护的变量在变量名前有一个“*”。这些前置值在两边都有空字节。
由于DOMNodeList实现了Traversable接口,因此自己创建数组相当容易:
$array = array();
foreach($names as $node){
$array[] = $node;
}
编辑:我已经删除了最初的解释,因为它不适用于这里。手册的意思是带有数字名称的属性被传递给数组但无法读取:
<?php
class Foo{
public function __construct(){
$this->{123} = 456;
}
}
$array = (array)new Foo;
var_dump($array);
var_dump($array['123']);
array(1) {
["123"]=>
int(456)
}
Notice: Undefined offset: 123 in D:\tmp\borrame.php on line 11
NULL
解释可能更多的DOMNodeList
是不是使用 PHP 代码创建的用户对象,而是用 C 定义的内置对象,因此适用不同的规则。