ホームページ >バックエンド開発 >PHPチュートリアル >PHP で「json_encode」が配列ではなく 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 サイトの他の関連記事を参照してください。