[php] xml vers array

xml vers array [php] - PHP - Programmation

Marsh Posté le 17-02-2013 à 15:35:45    

Bonjours, je cherche à convertir un fichier xml en array
pour se faire j'ai codé la fonction suivante:
 

Code :
  1. <?php
  2.     function xml2array($xml,$lastParent = null) {
  3.  $return = null;
  4.  foreach ($xml->children() as $parent => $child) {
  5.   //si l'item n'est pas présent dans le buffer de sortie: on crée un [$parent] = valeur
  6.   if (!isset($return[$parent])) $return[$parent] = xml2array($child,$parent)?xml2array($child,$parent):"$child";
  7.   //si l'item existe deja, on transforme en array type: [$parent][] = valeur
  8.   elseif (is_array($return[$parent])) $return[$parent][] = xml2array($child,$parent)?xml2array($child,$parent):"$child";
  9.  }
  10.  return $return;
  11. }
  12.     $xml = file_get_contents('./stats.xml');
  13.     $xml = new SimpleXMLElement($xml);
  14.     print_r(xml2array($xml));
  15. ?>


 
(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.

Reply

Marsh Posté le 17-02-2013 à 15:35:45   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed