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

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

Mary-Kate Olsen
リリース: 2024-12-03 08:51:09
オリジナル
704 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート