Json en php

devquentin
Invité n'ayant pas de compte PHPfrance

30 mars 2011, 22:06

Bonsoir.
Je suis dans le développement d'une application facebook.
Je cherche actuellement à transformer un tableau de json en une variable array utilisable sous php en faisant par exemple echo $T[4];

Voila ce que je reçois comme objet de départ :

{"data":[{"name":"aaaaaaa","id":"bbbbbbbbb"},{"name":"cccccccc","id":"dddddd"},{"name":"eeeee","id":"ffffff"}]}

J'obtiens cela dans ma page web en faisant l'instruction :

echo file_get_contents($graph_url2);

J'ai essayé les json_decode( .... , true) dans tous les sens et je trouve des erreurs.

Pourriez - vous m'aider?

Merci beaucoup.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 mars 2011, 22:23

salut,

je viens de tester ton bout json
<?php
$d = '{"data":[{"name":"aaaaaaa","id":"bbbbbbbbb"},{"name":"cccccccc","id":"dddddd"},{"name":"eeeee","id":"ffffff"}]}';
$x = json_decode($d,true);
var_dump($x);
?>
$x est bien un tableau à 2 dimensions !
array
'data' =>
array
0 =>
array
'name' => string 'aaaaaaa' (length=7)
'id' => string 'bbbbbbbbb' (length=9)
1 =>
array
'name' => string 'cccccccc' (length=8)
'id' => string 'dddddd' (length=6)
2 =>
array
'name' => string 'eeeee' (length=5)
'id' => string 'ffffff' (length=6)
peut tu donner plus d'infos sur ton problème ?

@+
Il en faut peu pour être heureux ......

devquentin
Invité n'ayant pas de compte PHPfrance

31 mars 2011, 13:04

Le problème c'est que lorsque je fais echo $x[1,'name'] ; j'ai une erreur..

Je pense que je ne sais pas utiliser $x .

Merci de votre aide.

ViPHP
ViPHP | 4039 Messages

31 mars 2011, 13:10

Je pense que je ne sais pas utiliser $x .
Utiliser Php ce serait déjà bien :wink:

C'est censé être quoi ceci: $x[1,'name'] ? :?
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
xTG
ViPHP | 7331 Messages

31 mars 2011, 13:11

En PHP on accède aux tableaux multidimensionnels ainsi :
echo $x[1]['name'];

devquentin
Invité n'ayant pas de compte PHPfrance

31 mars 2011, 14:04

Merci de vos réponses.

Le problème est que lorsque je fais
$a = json_decode(file_get_contents($graph_url2),true)['data'];
echo $a[1]['name'];

sur la page je reçois : arse error: syntax error, unexpected '['

Alors que je veux que la page affiche aaaaa.
Je ne comprend vraiment pas la structure du tableau je crois.
Merci pour votre aide!

Eléphant du PHP | 314 Messages

31 mars 2011, 14:24

Je ne sais pas bien d'où vient ta syntaxe, mais PHP n'est pas aussi permissif... Tu ne peux pas demander un indice d'un tableau retourné par un fonction en PHP !
Cordialement,
Julien - http://laravel.fr/

ViPHP
ViPHP | 4039 Messages

31 mars 2011, 14:39

Je ne sais pas bien d'où vient ta syntaxe, mais PHP n'est pas aussi permissif... Tu ne peux pas demander un indice d'un tableau retourné par un fonction en PHP !
En clair:
$a = json_decode(file_get_contents($graph_url2),true)['data'];

:evil: :evil: :evil:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 5462 Messages

31 mars 2011, 14:51


Eléphant du PHP | 92 Messages

31 mars 2011, 15:02

Hello,

Bon en tout cas tu peux pas faire comme ça...
Il faut que tu le fasses en 2 étapes :
$toto = json_decode(file_get_contents($graph_url2),true);
$a=$toto['data'];
Et là tu peux parcourir ton tableau pour récupérer tes valeurs.
Programmer c'est 20% de syntaxe pour 80% de réflexion et dans les 20% de syntaxe il faut encore compter une bonne dose de réflexion...
Je vous donne des conseils, pas des solutions toutes faites...

devquentin
Invité n'ayant pas de compte PHPfrance

31 mars 2011, 15:20

Merci beaucoup ça marche!!!!
Bonne continuation!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 mars 2011, 15:22

juste au cas ou $toto[0]['data'] c'est du deux dimesion :)

@+
Il en faut peu pour être heureux ......