IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lire stdClass imbriqué dans un Array


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Lire stdClass imbriqué dans un Array
    Bonjour,

    Je souhaiterais lire [tier] lorsque [queue] est égal à 'RANKED_SOLO_5x5' mais je n'arrive pas à rentrer dans les tableaux.

    Voici le json que j'aimerais exploiter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    (
        [24212467] => Array
            (
                [0] => stdClass Object
                    (
                        [name] => Sona s Zealots
                        [tier] => DIAMOND
                        [queue] => RANKED_SOLO_5x5
                        [entries] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [playerOrTeamId] => 24212467
                                        [playerOrTeamName] => Recovz
                                        [division] => V
                                        [leaguePoints] => 22
                                        [wins] => 57
                                        [losses] => 52
                                        [isHotStreak] => 
                                        [isVeteran] => 
                                        [isFreshBlood] => 
                                        [isInactive] => 
                                    )
     
                            )
     
                    )
     
                [1] => stdClass Object
                    (
                        [name] => Vayne s Fists
                        [tier] => GOLD
                        [queue] => RANKED_TEAM_5x5
                        [entries] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [playerOrTeamId] => TEAM-83ec0050-1471-11e5-b07a-c81f66dd30e5
                                        [playerOrTeamName] => Drake Tail
                                        [division] => I
                                        [leaguePoints] => 0
                                        [wins] => 4
                                        [losses] => 2
                                        [isHotStreak] => 
                                        [isVeteran] => 
                                        [isFreshBlood] => 
                                        [isInactive] => 
                                    )
     
                            )
     
                    )
     
            )
     
    )
    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Et pour cause, puisque stClass n'est pas un tableau.
    En supposant que tu obtiens tout ça en appliquant json_​decode à une chaine, tu as deux options :

    Soit accéder aux données de tes objets en les considérant comme des objets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tab = json_decode($laChaineJson);
    foreach ($tab as $obj) {
        if ($obj->queue == "RANKED_SOLO_5x5") {
            echo "TIER : ".$obj->tier;
        }
    }
    Soit te débarasser des objets et décoder la chaine en tableau de tableaux, grâce au 2e paramètre de json_decode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tab = json_decode($laChaineJson, true);
    foreach ($tab as $data) {
        if ($data['queue'] == "RANKED_SOLO_5x5") {
            echo "TIER : ".$data['tier'];
        }
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Merci de ta réponse mais ça ne marche pas.

    En fait je fais un file_get_contents puis un json_decode, et j'obtiens le json donné plus haut.
    Mais il y a un Array puis un stdClass donc il ne faut pas faire un double foreach ?
    Moi ce que j'aimerais c'est faire une sorte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab[24212467][0]->tier
    Mais ça n'a pas l'air de marcher comme ça ...

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ah effectivement, je n'ai pas tenu compte du double niveau de tableaux. Donc effectivement, il va falloir une double boucle.
    Par contre, $tab[24212467][0]->tier ça devrait marcher...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Non j'ai l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Cannot use object of type stdClass as array in C:\Users\Aymeric\Desktop\lol\resultat.php on line 45
    Je te donne mon code si tu veux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $res= file_get_contents('https://euw.api.pvp.net/api/lol/euw/v2.5/league/by-summoner/24212467/entry?api_key=0e7f32ca-39ea-431e-830c-176987ff6963');
    $tab = json_decode($res);
     
    print_r($tab);
     
    // echo $tab[24212467][0]->tier;

    EDIT :

    J'ai réussi en fait grâce à ta deuxième méthode en transformant le tout en tableau !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $tab = json_decode($resultat, true);
    echo $tab[24212467][0][tier];
    Un grand merci !


    EDIT 2 :

    J'ai juste une petite erreur mais je récupère bien la donnée 'DIAMOND' quand même, c'est bizarre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Notice: Use of undefined constant tier - assumed 'tier' in C:\Users\Aymeric\Desktop\lol\resultat.php on line 44
    DIAMOND

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    tu as oublié les quotes autour de tier dans ta solution : $tab[24212467][0]['tier']
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Celira Voir le message
    tu as oublié les quotes autour de tier dans ta solution : $tab[24212467][0]['tier']
    En effet !
    Problème résolu, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SAX] Lire des données imbriquées dans d'autres
    Par totot dans le forum Format d'échange (XML, JSON...)
    Réponses: 16
    Dernier message: 03/05/2014, 18h48
  2. [XML] Lire un OBJET dans un OBJET dans un ARRAY
    Par Irokoi dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 24/05/2013, 14h53
  3. Réponses: 2
    Dernier message: 26/05/2011, 16h43
  4. Lire une valeur dans le registre
    Par John.s dans le forum C
    Réponses: 2
    Dernier message: 26/11/2003, 19h55
  5. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo