Maison > Questions et réponses > le corps du texte
J'essaie d'analyser un fichier JSON en utilisant PHP. Mais maintenant je suis coincé.
Voici le contenu de mon fichier JSON :
{ "John": { "status":"Wait" }, "Jennifer": { "status":"Active" }, "James": { "status":"Active", "age":56, "count":10, "progress":0.0029857, "bad":0 } }
Voici ce que j'ai essayé jusqu'à présent :
<?php $string = file_get_contents("/home/michael/test.json"); $json_a = json_decode($string, true); echo $json_a['John'][status]; echo $json_a['Jennifer'][status];
Mais comme je ne connais pas le nom (par exemple 'John'
、'Jennifer'
)以及所有可用的键和值(例如 'age'
、'count'
) à l'avance, je pense que je dois créer des boucles foreach.
J'aurais aimé qu'il y ait un exemple.
P粉9201997612023-10-11 07:17:05
Je ne peux pas croire qu'autant de personnes publient des réponses sans lire correctement le JSON.
Si vous itérez séparément $json_a
,你就会得到一个对象的对象。即使您传入 true
comme deuxième paramètre, vous disposez également d'un tableau 2D. Si vous effectuez une boucle sur la première dimension, vous ne pouvez pas faire écho à la deuxième dimension comme ceci. Donc c'est faux :
foreach ($json_a as $k => $v) { echo $k, ' : ', $v; }
Pour faire écho au statut de chacun, essayez ceci :
$person_a) { echo $person_a['status']; } ?>
P粉6680193392023-10-11 07:17:05
Pour parcourir un tableau multidimensionnel, vous pouvez utiliser RecursiveArrayIterator< /p>
$jsonIterator = new RecursiveIteratorIterator( new RecursiveArrayIterator(json_decode($json, TRUE)), RecursiveIteratorIterator::SELF_FIRST); foreach ($jsonIterator as $key => $val) { if(is_array($val)) { echo "$key:\n"; } else { echo "$key => $val\n"; } }
Sortie :
John: status => Wait Jennifer: status => Active James: status => Active age => 56 count => 10 progress => 0.0029857 bad => 0