ホームページ >バックエンド開発 >PHPチュートリアル >PHP で「json_encode」が配列ではなく JSON オブジェクトを返す場合があるのはなぜですか?

PHP で「json_encode」が配列ではなく JSON オブジェクトを返す場合があるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-03 08:51:09626ブラウズ

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]

For json_encode to配列を 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。