2014-05-20 6 views
1

J'ai un tableau JSON que je veux pouvoir descendre à un niveau inférieur et imprimer juste cette valeur. Le problème se produit quand j'atteins un niveau qui a été indiqué comme [0] (ou [n]). Par exemple, j'ai la sortie suivante, et je veux juste imprimer le game key pour la première ligue.PHP Impression JSON valeur

Voilà comment je suis en train de l'imprimer

HtmlSpecialChars(print_r($user->fantasy_content->users[0]->user[1]->games[0]->game[0]->game_key,1)) 

Cependant, je continue à obtenir cette erreur:

Cannot use object of type stdClass as array 

Quand je le fais, il semble progressivement échouer sur cette commande (donc je suppose Je ne suis pas index correctement):

$user->fantasy_content->users[0] 

est ici la sortie:

stdClass Object 
(
    [fantasy_content] => stdClass Object 
     (
      [xml:lang] => en-US 
      [yahoo:uri] => /fantasy/v2/users;use_login=1/games 
      [users] => stdClass Object 
       (
        [0] => stdClass Object 
         (
          [user] => Array 
           (
            [0] => stdClass Object 
             (
              [guid] => IYEZUHTVBYRLIB3OAQC5WRZPQY 
             ) 

            [1] => stdClass Object 
             (
              [games] => stdClass Object 
               (
                [0] => stdClass Object 
                 (
                  [game] => Array 
                   (
                    [0] => stdClass Object 
                     (
                      [game_key] => 147 
                      [game_id] => 147 
                      [name] => Baseball 
                      [code] => mlb 
                      [type] => full 
                      [url] => http://baseball.fantasysports.yahoo.com/b1 
                      [season] => 2006 
                     ) 

                   ) 

                 ) 

                [count] => 1 
               ) 

             ) 

           ) 

         ) 

        [count] => 1 
       ) 

      [time] => 52.390813827515ms 
      [copyright] => Data provided by Yahoo! and STATS, LLC 
      [refresh_rate] => 60 
     ) 

) 

Répondre

0

Pour les objets, vous devez utiliser la syntaxe -> et Si le nom de clé/propriété est un nombre ou a d'autres caractères spéciaux, vous devrez utiliser la syntaxe $object->{'0'}.

Le game_key peut être récupéré à l'aide:

$user->fantasy_content->users->{'0'}->user[1]->games->{'0'}->game[0]->game_key; 
+1

Vous ne devez pas utiliser des guillemets, juste 'objet $ -> {0}' travaille dans le de la même façon. – MrLore

+0

merci! c'était exactement ce que je cherchais! –

0

Vous pouvez convertir un objet stdClass à un tableau en le jetant comme ceci:

<?php 

$array = (array) $myObject; 

echo json_encode($array); 

Vous pouvez également lancer en ligne:

<?php 

echo json_encode((array) $object); 
+0

merci pour la réponse cela a été très utile –