PHP -5 / Json - Manipuler objets

Fermé
Kergad - Modifié par Kergad le 3/05/2012 à 03:15
the_animal Messages postés 69 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 - 4 mai 2012 à 05:21
Bonjour,

J'essai de recupérer les informations venant d'une appli iphone en Json.

Voici mon retour avec cette requete:

$encode=$_POST['contacts']; 
$obj=json_decode($encode); 
if ($obj == TRUE) print_r($obj->Object); 

resultat:

Array 
( 
    [0] => stdClass Object 
        ( 
            [Contatct] => stdClass Object 
                ( 
                    [FirstName] => John 
                    [LastName] =>  
                    [Number] => stdClass Object 
                        ( 
                            [Mobile] => 13434567890 
                        ) 

                ) 

            [ID] => 0 
        ) 

) 

Par exemple j aimerai extraire eles variables FirstName et Mobile pour les stocker dans une DB.

Merci de m aider, je galere un peu sur les objet php....

3 réponses

the_animal Messages postés 69 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 18
3 mai 2012 à 06:19
ton variable est un array d'objets.
Donc pour avoir les elements, il faut donc parcourir d'abord le tableau (foreach) puis on aura la valeur de chaque attribut d'objet par "->"
voici le code:

foreach($obj->Object as $value){
echo "First Name:".$value->FirstName;
echo "mobile:".$value->Number->Mobile;
}
2
Merci beaucoup, effectivement c'était bien la solution.

Autre soucis pour les sous sous objet?



            

            $encode=$_POST['contacts'];
            $obj=json_decode($encode);
            
            echo $obj->UID;
            
            if ($obj->Object == TRUE) {
            foreach($obj->Object as $contact){
                foreach($contact as $value)
                    {
                    echo "<br>First Name: ".$value->FirstName."";
                    echo "<br>Last Name: ".$value->LastName."";
                        
                    foreach($value->Number as $num)
                        {
                            echo "<br>mobile:".$num->Mobile;
                            echo "<br>iPhone:".$num->iPhone;
                        }
                    foreach($value->email as $mail)
                        {
                            echo "<br>Home:".$mail->Home;
                            echo "<br>Work:".$mail->Work;
                        }
                    }
                
            }
            }


Mais mes numero ne s affiche pas et j ai une erreur par la suite :/


 
C5E45732-E7A3-5D50-BD3D-E43B469F4055<br>
First Name: jhon<br>
Last Name: korki<br>
mobile:<br>
iPhone:<br>
mobile:<br>
iPhone:<br>Home:<br>Work:<br>Home:<br>Work:


ou voir une Invalid argument supplied for foreach()


Comment extraire les numéros et email sans savoir en amont le nom des champs (home, work,...)
0
the_animal Messages postés 69 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 18
4 mai 2012 à 05:21
comme je te l'ai déjà ennoncé en haut, pour accéder au mobile on fait:
$contact->Number->Mobile

Il n'y a pas d'array donc on ne doit pas parcourir par foreach.
0