Bonjours, je cherche à convertir un fichier xml en array
pour se faire j'ai codé la fonction suivante:
Code :
- <?php
- function xml2array($xml,$lastParent = null) {
- $return = null;
- foreach ($xml->children() as $parent => $child) {
- //si l'item n'est pas présent dans le buffer de sortie: on crée un [$parent] = valeur
- if (!isset($return[$parent])) $return[$parent] = xml2array($child,$parent)?xml2array($child,$parent):"$child";
- //si l'item existe deja, on transforme en array type: [$parent][] = valeur
- elseif (is_array($return[$parent])) $return[$parent][] = xml2array($child,$parent)?xml2array($child,$parent):"$child";
- }
- return $return;
- }
- $xml = file_get_contents('./stats.xml');
- $xml = new SimpleXMLElement($xml);
- print_r(xml2array($xml));
- ?>
|
(la variable $lastParent) ne sers pas pour le moment mais ca viendra je pense)
mon soucis c'est que je dois gerer plusieurs items qui portent le meme nom, genre dans le fichier xml j'ai des:
<item>valeur</item>
<item>encore un truc</item>
etc
le fichier est ici au besoin: http://steamcommunity.com/id/Chr0n [...] /?schema=1
pour gerer ce soucis je veu faire en sorte que si l'item n'existe pas dans le tableau: on déclare l'item et sa valeur
si il existe deja: on bascule l'ancien item dans un sous tableau (c'est la que ca fail) et on ajoute la suite apres
genre: $return[$parent][] = "$child" au lieu de $return[$parent] = "$child";
du coup je suis coincé et je me retrouve avec des:
Citation :
Array
(
[steamID64] => 76561198008199065
[stats] => Array
(
[item] => Array
(
[APIName] => kills
[value] => 189036
[displayName] => Kills
[0] => Array
(
[APIName] => damagehealed
[value] => 82694
[displayName] => Damage Healed
)
[1] => Array
(
[APIName] => weldingpoints
[value] => 970214
[displayName] => Welding Points
)
[2] => Array
(
[APIName] => shotgundamage
[value] => 11968633
[displayName] => Shotgun Damage
)
|
hors la premiere partie:
[APIName] => kills
[value] => 189036
[displayName] => Kills
devrais etre dans $results['stats']['item'][0]
hors la elle est dans $results['stats']['item']
je cherche à corriger ca, quelqu'un pourais m'aider ?
d'avance merci.