Warum funktioniert (array) Arbeit? Da ein DOMNodeList Objekt nur eine Eigenschaft hat, length, und es ist der Integer-Typ:
If an object is converted to an array, the result is an array whose elements are the object's properties. The keys are the member variable names, with a few notable exceptions: integer properties are unaccessible; private variables have the class name prepended to the variable name; protected variables have a '*' prepended to the variable name. These prepended values have null bytes on either side.
Da ein DOMNodeList implementiert die Traversable Schnittstelle, ist es ziemlich einfach das Array zu erstellen selbst:
$array = array();
foreach($names as $node){
$array[] = $node;
}
Bearbeiten: Ich habe die ursprüngliche Erklärung entfernt, weil es hier nicht gilt. Was die manuellen Mittel ist, dass Eigenschaften mit numerischen Namen auf das Array übergeben werden, aber nicht gelesen werden können:
<?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
Die Erklärung dafür ist wahrscheinlich mehr auf der Linie, dass DOMNodeList
kein Benutzerobjekt mit PHP-Code erstellt ist, aber ein in C definiertes eingebautes Objekt, so gelten andere Regeln.
Dies ist die richtige Antwort sein sollte . Es funktioniert und ist sehr einfach. –
Einverstanden. Das ist das Beste. –
Das funktioniert nicht für mich. 'Abfangbarer fataler Fehler: Argument 1, das an iterator_to_array() übergeben wird, muss die Schnittstelle Traversable implementieren, Instanz der angegebenen DOMNodeList ' –