Web アプリケーション、またはフロントエンドとバックエンドが分離されたアプリケーションを開発する場合、多くの場合、処理のために JSON データを配列に変換する必要があります。 JSON データの処理をサポートする言語として、PHP はこの要件を達成するための複数のメソッドを提供します。ここでは、一般的に使用される 3 つの方法とその使用シナリオを紹介します。
json_decode は、JSON 形式のデータを PHP の配列に変換するために使用できる PHP の組み込み関数の 1 つです。 json_decode の使用は非常に簡単で、解析する必要がある JSON 文字列を渡すだけです。
$jsonStr = '{"name": "Tom", "age": 20, "gender": "male"}'; $array = json_decode($jsonStr, true);
json_decode の 2 番目のパラメータは戻り値の型を指定します。ここで true に設定すると、配列型を返すことになります。 2 番目のパラメーターが渡されない場合は、stdClass オブジェクト型が返されます。 JSON が整形式でない場合は、NULL が返されます。
この方法は、JSON データ形式が単純でレベルが深くない状況に適していますが、JSON データが複雑でレベルが深い場合は、複数の foreach ループをネストして処理する必要があります。コードの読みやすさ、性別、効率に影響を与える配列。
PHP には、json_decode と同じ機能を持ち、JSON 形式のデータを PHP 配列に変換するために使用される拡張関数 json_decode_array も提供されています。ただし、json_decode とは異なり、json_decode_array は戻り値の型を指定するために 2 番目のパラメーターを渡す必要はなく、配列の型を直接返します。
$jsonStr = '{"name": "Tom", "age": 20, "gender": "male"}'; $array = json_decode_array($jsonStr);
json_decode と比較すると、json_decode_array は C で記述されており、PHP コードよりも高速に処理できるため、パフォーマンスが高くなります。したがって、JSON 形式のデータを効率的に処理する必要がある場合は、json_decode_array を使用することが賢明な選択です。
ただし、json_decode_array は組み込み関数ではなく PHP の拡張関数であるため、使用するには対応する拡張ライブラリをインストールする必要があります。 Windows システムでは、php.ini の extension=php_json.dll のコメントを解除して拡張ライブラリを有効にできます。Linux システムでは、pecl コマンドを使用して拡張ライブラリをインストールできます。
PHP 独自の関数と拡張機能に加えて、サードパーティのコンポーネントを使用して JSON を配列に変換する関数を実装することもできます。この記事で紹介する方法は、Composer を使用して、JsonMachine と呼ばれるサードパーティの JSON 処理ライブラリをインストールすることです。
// 安装 JsonMachine 库 composer require salsify/json-machine $jsonStr = '{"name": "Tom", "age": 20, "gender": "male"}'; // 将 JSON 转化为数组 $array = json_machine($jsonStr);
JsonMachine が提供する json_machine 関数は、JSON 文字列、PHP オリジナル配列、stdClass オブジェクトなどを含むさまざまなパラメータ形式を受け取ることができ、その戻り結果はすべて PHP 配列型です。
JsonMachine は、メモリ使用量を削減し、コードのパフォーマンスを向上させるために、イテレータの形式で JSON データを返すこともサポートしています。
PHP 組み込み関数 json_decode または拡張関数 json_decode_array を使用するか、サードパーティ ライブラリ JsonMachine を使用するかに関係なく、JSON を PHP 配列に変換するニーズを満たすことができます。 , 利用方法も比較的簡単です。独自のニーズに応じてさまざまな方法を選択し、最高のコード効率と可読性を実現できます。
以上がPHPでjsonを配列に変換する方法(3つの方法)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。