2013-02-03 2 views
2

$response est un élément SimpleXML et un var_dump initial le montre sous forme de tableau mais je ne peux pas le parcourir. Il se transforme en objet quand j'y accède spécifiquement.var_dump() affiche array mais is_array() est false

Des suggestions?

var_dump($response); //shows KeyResult as array 
    if (is_array($response->KeyResult)) { //returns false 
     $addressRankings = array(); 
     foreach ($response->KeyResult as $rating) { 
      print_r($rating); 

Voici le var_dump

object(SimpleXMLElement)#8 (1) { 
    ["KeyResult"]=> 
    array(10) { 
    [0]=> 
    object(SimpleXMLElement)#7 (5) { 
+0

vous voulez dire que ce n'est pas non plus vide? –

+0

Pourquoi ne pouvez-vous pas le remplacer par 'if ($ response-> KeyResult instanceof \ Traversable)'? – meze

+2

Que montre 'var_dump ($ response-> KeyResult)'? – mrunion

Répondre

3

var_dump Libère le contenu de l'objet SimpleXML, mais lorsque vous appelez ->KeyResult il a plus de magie (comme méthode __get), ce qui ne revient pas an array:

Les propriétés ($ movies-> movie dans l'exemple précédent) ne sont pas des tableaux. Ils sont des objets itératifs et accessibles.

+0

Si vous voulez savoir si vous pouvez utiliser 'foreach', faites si (is_array ($ var) || $ var instanceof Traversable)'. –

Questions connexes