2011-07-07 2 views
0

Je suis en train de construire un tableau et je suis en boucle à travers les valeurs d'un document XML, j'ai tout en tirant une grande aide de XPath, voici mon code:Tableau étrange Comportement en PHP

function parseAccountIds($xml) { 

    $arr = array(); 

    foreach($xml->entry as $k => $v) { 

     $acctName = $v->title; 

     $prop = $v->xpath('dxp:property'); 
     foreach($prop as $k1 => $v1) { 
      if($v1->attributes()->name == "ga:accountId") 
       $acctId = (string) $v1->attributes()->value; 
      else if($v1->attributes()->name == "ga:profileId") 
       $profileId = (string) $v1->attributes()->value; 
     } 

     echo "profile id ".$profileId; 

     echo "<BR>";  

     echo "acctName ".$acctName; 

     echo "<BR>";  

     $subArray = array($acctName => $profileId); 

     print_r($subArray); 

     $arr[] = array($acctId => $subArray); 

    } 

    print_r($arr); 

    return json_encode($arr); 

} 

Le plus important bit est où je print_r subArray. Je peux voir acctName et profileId print, mais subArray est vide. Par exemple:

profile id 45580 
acctName accountName1 
Array 
(
) 
profile id 4300 
acctName accountName2 
Array 
(
) 
profile id 4338 
acctName accountName3 
Array 
(
) 

Comment ces valeurs ne sont pas insérés? Je regarde le code depuis un moment et je suis un peu confus.

Toute suggestion aiderait vraiment, Merci!

+0

Certainement, cela ne devrait pas être possible ... vous avez des erreurs? Courez-vous avec 'error_reporting (E_ALL)'? – Jon

+0

C'est un bon appel, allumé, mais je ne vois aucune erreur –

+1

Jetez dans la ligne suivante immédiatement après l'attribution de $ subArray: var_dump ($ profileId, $ acctName, $ subArray); –

Répondre

0

$ V-> titre est en fait un SimpleXMLObject encore!

J'ai oublié de le lancer comme une chaîne, quand j'ai essayé d'en faire l'index dans le tableau, ça a flippé, geez j'ai passé une heure entière sur ceci!

Merci pour vos suggestions les gars: P

+0

Je pense que print_r force les objets standards tels que l'objet XML ou Class à des chaînes si possible. Seul var_dump() retourne réellement "type/nom de variable" + "valeur". Peut-être que je me trompe. –

+0

Si tel est le cas, la suggestion de Matt aurait résolu le problème. J'ai effectivement essayé de mettre l'acctname comme valeur au lieu de l'index, et il a imprimé SimpleXMLObject –

0

essayez ceci:

$subArray[$acctName] = $profileId; 

au lieu de

$subArray = array($acctName => $profileId);