Comment convertir DOMNodeList objet dans un tableau
J'ai ce code:
$dom = new DOMDocument();
$dom->load('file.xml');
$names = $dom->getElementsByTagName('name');
Maintenant, $names
est DOMNodeList objet, j'ai besoin de convertir cet objet dans un tableau,
$names = (array)$names;
var_dump($names); //empty array
Le code ci-dessus ne fonctionne pas et renvoie un tableau vide, pourquoi?
OriginalL'auteur OTAR | 2013-04-04
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas (tableau) travail? Parce qu'un DOMNodeList objet n'a qu'une seule propriété, longueur, et il est de type entier:Depuis un DOMNodeList met en œuvre la Traversable interface, il est assez facile de créer la matrice de vous-même:
Edit: j'ai supprimé la première explication, car il ne s'applique pas ici. Ce que le manuel signifie que les propriétés numériques noms sont passés à la matrice, mais ne peut pas être lu:
L'explication est sans doute plus sur la ligne qui
DOMNodeList
n'est pas un objet utilisateur créé avec du code PHP, mais un builtin objet défini dans C, de sorte que des règles différentes s'appliquent.OriginalL'auteur Álvaro González
Utilisation iterator_to_array() pour convertir une DomNodeList à un Tableau
D'accord. C'est le meilleur.
Cela ne fonctionne pas pour moi.
Catchable fatal error: Argument 1 passed to iterator_to_array() must implement interface Traversable, instance of DOMNodeList given
FWIW, comme de la documentation, je suis en train de lire (5.6.35),
DOMNodeList
implémenteTraversable
. Le journal des modifications dans les docs est silencieux lorsque cela a changé. Aussi je n'ai pas essayé cette solution particulière et il peut y avoir des bugs dans le jeu.OriginalL'auteur Blar
Juste itérer à travers les éléments et les mettre dans un tableau:
De cette façon, ils seront toujours DOMNode cas, vous voudrez peut-être obtenir leur
textContent
propriété.OriginalL'auteur complex857
En supposant que vous voulez que les valeurs réelles et de ne pas créer un tableau de nœuds DOM:
OriginalL'auteur Will
OriginalL'auteur Puzzled Boy