関数の概要
PHPの json_decode 関数は、JSON形式の文字列をPHPの配列やオブジェクトに変換するために使われます。Web APIやJavaScriptから受け取ったJSONデータをPHPで扱いやすい形に変換する際に非常に便利な関数です。使い方もシンプルで、デコードしたいJSON文字列を渡すだけで直感的に利用できます。
パラメータの説明
string $json:変換対象のJSON形式の文字列を指定します。bool $assoc = false:デコード結果を連想配列として返すかどうかを指定します。trueにすると配列、falseだとオブジェクトが返ります。int $depth = 512:デコードの再帰の深さを指定します。デフォルトは512です。int $flags = 0:デコードの動作を変更するフラグを設定します。主なフラグにはJSON_BIGINT_AS_STRINGなどがあります。
戻り値
正常にデコードできた場合、json_decode はPHPのオブジェクトまたは配列を返します。$assocパラメータが true のときは連想配列として、false のときはオブジェクトとして返されます。JSONが無効な場合やエラーが発生した場合は null を返します。
使用例
基本的な使い方(オブジェクトとして取得)
$json = '{"name":"山田太郎","age":30}';
$data = json_decode($json);
echo $data->name; // 出力: 山田太郎
JSON文字列をPHPのオブジェクトに変換し、オブジェクトのプロパティとしてアクセスしています。
連想配列として取得する方法
$json = '{"name":"山田太郎","age":30}';
$data = json_decode($json, true);
echo $data['name']; // 出力: 山田太郎
配列で使いたい場合は、第2引数に true を設定することで連想配列に変換できます。
ネストしたJSONのデコード
$json = '{
"user": {
"name": "山田太郎",
"email": "taro@example.com"
},
"status": "active"
}';
$data = json_decode($json, true);
echo $data['user']['email']; // 出力: taro@example.com
複雑なネスト構造のJSONも連想配列に変換して階層的にアクセス可能です。
関連する関数
json_encode:PHPの配列やオブジェクトをJSON文字列に変換する関数。json_last_error:最後に発生したJSON処理のエラーを取得する関数。json_last_error_msg:最後に発生したJSON処理のエラー内容を文字列で取得する関数。
まとめ
json_decode はPHPでJSON文字列を扱う際の基本的かつ重要な関数です。オブジェクトや連想配列のいずれかで扱えるため、用途に合わせて使い分けが可能です。API連携や外部データの取り込み時に必須の知識なので、パラメータの意味や戻り値の取り扱い方をしっかり理解しておきましょう。
