• PHP
「PHPでJSONを扱う」json_encodeとjson_decode完全ガイド

JSONとPHPの連想配列の違い

JSONの例: {"名前":"松本たくや","年齢":78}
PHPの連想配列の例: ['名前' => '松本たくや', '年齢' => 78]

上記の通り構造(キーと値のペア)は似ているのですが、いくつか重要な違いがあります

PHPの連想配列JSON
性質メモリ上のデータテキストデータ
キー数値や文字列などの色んな型文字列のみ
関数、リソースなど配列、オブジェクト、論理値、null
データ保存・転送そのままでは不可文字列形式の為、可能

PHPの連想配列 メモリ上のデータ構造 $user = [ ‘name’ => ‘松本たくや’, ‘age’ => 78, ‘is_active’ => true ]; • PHPプログラム内部で使用 • 直接操作可能 • プログラムが終了すると消える JSON テキスト形式のデータ { “name”: “松本たくや”, “age”: 78, “is_active”: true } • 文字列として保存・送信可能 • 言語に依存しない形式 • ファイル保存やAPI通信に使用 json_encode() json_decode()

JSONは多言語対応でデータの保存や転送も可能ですので、API通信やログ出力でよく使用されます!

json_encode関数:PHPの値をJSON文字列に変換

$array = ['name' => '渡辺だいすけ', 'age' => 30];
$json = json_encode($array, JSON_UNESCAPED_UNICODE);
// 結果: {"name":"渡辺だいすけ","age":30}
項目説明
基本構文json_encode(value, options, depth)
機能PHP の値や配列、オブジェクトを JSON 形式の文字列に変換する
必須引数value: 変換する PHP の値(配列、オブジェクトなど)
オプション引数options: JSON エンコードオプション(デフォルト: 0)
depth: 最大深さ(デフォルト: 512)
戻り値JSON 形式の文字列、またはエラー時は false
主なオプションフラグJSON_PRETTY_PRINT: 読みやすく整形(改行、インデント追加)
JSON_UNESCAPED_UNICODE: Unicode 文字をエスケープしない
JSON_UNESCAPED_SLASHES: スラッシュをエスケープしない
JSON_NUMERIC_CHECK: 数字の文字列を数値に変換
JSON_FORCE_OBJECT: 空の配列や順番配列もオブジェクトとして出力

json_decode関数:JSON文字列をPHPの値に変換

項目説明
基本構文json_decode(json, associative, depth, options)
機能JSON 形式の文字列を PHP の値に変換する
必須引数json: デコードする JSON 文字列
オプション引数associative: 連想配列として返すか(デフォルト: false
depth: 最大深さ(デフォルト: 512)
options: JSON デコードオプション(デフォルト: 0)
戻り値変換された値(オブジェクトまたは配列)、またはエラー時は null
主なオプション設定associative = true: オブジェクトではなく連想配列として結果を返す
associative = false: stdClass オブジェクトとして結果を返す
JSON_BIGINT_AS_STRING: 大きな整数を文字列として扱う