Rumah > Soal Jawab > teks badan
Saya cuba menghuraikan fail JSON menggunakan PHP. Tapi sekarang saya buntu.
Ini ialah kandungan fail JSON saya:
{ "John": { "status":"Wait" }, "Jennifer": { "status":"Active" }, "James": { "status":"Active", "age":56, "count":10, "progress":0.0029857, "bad":0 } }
Ini yang saya cuba setakat ini:
<?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];
Tetapi memandangkan saya tidak tahu nama (cth. 'John'
、'Jennifer'
)以及所有可用的键和值(例如 'age'
、'count'
) terlebih dahulu, saya rasa saya perlu mencipta beberapa gelung foreach.
Saya harap ada contoh.
P粉9201997612023-10-11 07:17:05
Saya tidak percaya begitu ramai orang menyiarkan jawapan tanpa membaca JSON dengan betul.
Jika anda mengulang secara berasingan $json_a
,你就会得到一个对象的对象。即使您传入 true
sebagai parameter kedua, anda juga mempunyai tatasusunan 2D. Jika anda menggelung pada dimensi pertama, anda tidak boleh menggemakan dimensi kedua seperti ini. Jadi ini salah:
foreach ($json_a as $k => $v) { echo $k, ' : ', $v; }
Untuk menggemakan status semua orang, cuba ini:
$person_a) { echo $person_a['status']; } ?>
P粉6680193392023-10-11 07:17:05
Untuk mengulangi tatasusunan berbilang dimensi, anda boleh menggunakan 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"; } }
Keluaran:
John: status => Wait Jennifer: status => Active James: status => Active age => 56 count => 10 progress => 0.0029857 bad => 0