使用 json_encode 將 PHP 陣列轉換為 JSON 時,您可能會遇到輸出是物件而不是陣列的問題。當數組鍵不連續時,就會出現這種差異。
根據 JSON 資料交換格式,陣列表示為方括號,周圍用逗號分隔值:
[value, value, value]
對於 json_encode將陣列渲染為 JSON數組,它必須是連續的,這意味著它的鍵應該是從0.
示例:
$input = [ ['id' => 0, 'name' => 'name1', 'short_name' => 'n1'], ['id' => 2, 'name' => 'name2', 'short_name' => 'n2'] ];
如果您嘗試對這個數組進行json_encode ,您將得到一個JSON 物件而不是數組:
{ "0": { "id": 0, "name": "name1", "short_name": "n1" }, "2": { "id": 2, "name": "name2", "short_name": "n2" } }
解決方案:
至解決此問題,您需要使用array_values() 順序重新索引數組:
$input_sequential = array_values($input); $json_array = json_encode($input_sequential);
此操作將產生JSON 字串表示形式作為數組:
[ { "id": 0, "name": "name1", "short_name": "n1" }, { "id": 2, "name": "name2", "short_name": "n2" } ]
以上是為什麼 PHP 中的 json_encode 有時會傳回 JSON 物件而不是陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!