JSONとPHPの連想配列の違い
JSONの例: {"名前":"松本たくや","年齢":78}
PHPの連想配列の例: ['名前' => '松本たくや', '年齢' => 78]
上記の通り構造(キーと値のペア)は似ているのですが、いくつか重要な違いがあります
PHPの連想配列 | JSON | |
---|---|---|
性質 | メモリ上のデータ | テキストデータ |
キー | 数値や文字列などの色んな型 | 文字列のみ |
値 | 関数、リソースなど | 配列、オブジェクト、論理値、null |
データ保存・転送 | そのままでは不可 | 文字列形式の為、可能 |
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: 大きな整数を文字列として扱う |