JSON_ENCODE による疎配列のエンコードの違い: オブジェクトと配列
疎配列を扱う場合、json_encode の動作を理解することが重要です。スパース配列とは、欠落したインデックスを含み、数値シーケンスにギャップが生じる配列です。
問題
提供されたコード スニペットで示されているように、json_encode は最初にスパース配列をエンコードします。配列 $a を配列として指定します。ただし、unset を使用して要素を削除した後、後続の json_encode 呼び出しによって JSON オブジェクトが生成されます。
説明
JSON には、インデックスが欠落している配列を表す方法がありません。その結果、このようなギャップが発生した場合、json_encode はスパース配列を JSON オブジェクトとしてエンコードするようにフォールバックします。
解決策
この動作を回避し、スパース配列が確実にエンコードされるようにするには、一貫して配列としてエンコードされるため、json_encode を適用する前に array_values($a) を使用できます。この関数は配列のインデックスを再作成し、ギャップを削除し、一貫した出力を保証します。
以上が「json_encode」がスパース配列をその構造に応じて異なる方法で扱うのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。