我嘗試使用 PHP 解析 JSON 檔案。但我現在陷入困境了。
這是我的 JSON 檔案的內容:
{ "John": { "status":"Wait" }, "Jennifer": { "status":"Active" }, "James": { "status":"Active", "age":56, "count":10, "progress":0.0029857, "bad":0 } }
這是我迄今為止嘗試過的:
<?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];
但是因為我不知道名稱(例如'John'
、'Jennifer'
)以及所有可用的鍵和值(例如'age'
、 'count'
)事先,我想我需要建立一些foreach 迴圈。
我希望有一個例子。
P粉9201997612023-10-11 07:17:05
我不敢相信這麼多人在沒有正確閱讀 JSON 的情況下就發布答案。
如果你單獨迭代$json_a
,你就會得到一個物件的物件。即使您傳入 true
作為第二個參數,您也有一個二維數組。如果你循環遍歷第一個維度,你就無法像這樣回顯第二個維度。所以這是錯誤的:
foreach ($json_a as $k => $v) { echo $k, ' : ', $v; }
要回顯每個人的狀態,請嘗試以下操作:
$person_a) { echo $person_a['status']; } ?>
P粉6680193392023-10-11 07:17:05
要迭代多維數組,可以使用 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"; } }
輸出:
John: status => Wait Jennifer: status => Active James: status => Active age => 56 count => 10 progress => 0.0029857 bad => 0#