Existe-t-il un moyen facile de rassembler un tableau associatif PHP vers et à partir de XML? Par exemple, je le tableau suivant:Passage de tableaux associatifs PHP vers et à partir de XML
$items = array("1", "2",
array(
"item3.1" => "3.1",
"item3.2" => "3.2"
"isawesome" => true
)
);
Comment pourrais-je transformer en quelque chose de similaire au XML suivant que quelques lignes que possible, puis de nouveau?
<items>
<item>1</item>
<item>2</item>
<item>
<item3_1>3.1</item3_1>
<item3_2>3.2</item3_2>
<isawesome>true</isawesome>
</item>
</items>
Je ne me soucie pas vraiment si je dois changer la structure du tableau un peu ou si le code XML qui sort est différent de l'exemple ci-dessus. J'ai essayé de travailler avec PHP et de XMLReaderXMLWriter, mais la documentation est si pauvre et le code que j'ai produit en conséquence ne ressemble en rien à ce que je pense qu'il devrait ressembler à:
$xml = SomeXMLWriter::writeArrayToXml($items);
$array = SomeXMLWriter::writeXmlToArray($xml);
-t-il vraiment doit être plus difficile que cela pour obtenir un vidage XML brut de base d'un tableau PHP sans écrire ma propre classe personnalisée?
J'essaie d'éviter PEAR. En plus des problèmes de configuration que j'ai rencontrés, je ne suis jamais resté avec l'un des paquets que j'ai utilisé.
si vous avez des tableaux non associatifs (ou plutôt, des tableaux contenant des nombres) dans vos données, en ajoutant un 'if (is_numeric ($ key)) $ key = "item";' au début du bloc foreach (avant is_array) fait l'affaire. – Kemal
Pour être fonctionnel avec les tableaux numériques, ajoutez '$ fKey = is_numeric ($ key)? 'numericValue': $ key; ** avant ** 'if (is_array ($ value))', et utilisez '$ fKey' dans le reste de l'instruction foreach. – Vassilis
Oh @VassilisGr, j'ai fait quelque chose comme ça: 'if (is_numeric ($ key)) {$ key = 'node'; } 'et déplacé la fonction' write' en dehors, vous ne pouvez pas déclarer deux fois la même fonction, mais @Conrad va maintenant le faire. (Merde, j'ai vu maintenant @disq commenter haha) – Wiliam