首頁 > 後端開發 > php教程 > 為什麼 PHP 中的 json_encode 有時會傳回 JSON 物件而不是陣列?

為什麼 PHP 中的 json_encode 有時會傳回 JSON 物件而不是陣列?

Mary-Kate Olsen
發布: 2024-12-03 08:51:09
原創
626 人瀏覽過

Why Does `json_encode` Sometimes Return a JSON Object Instead of an Array in PHP?

將 PHP 陣列編碼為 JSON 陣列

使用 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板