PHP アドバンス

PHP と JSON

1. JSONとは何か?

JSONは「JavaScript Object Notation」の略称で、データの保存や交換に使用される標準的な構文です。
JSON形式はテキストベースのフォーマットであるため、サーバー間での送受信が非常に容易であり、あらゆるプログラミング言語でデータ形式として採用されています。

2. PHP と JSON

PHPには、JSONを扱うための便利な組み込み関数が用意されています。
本ガイドでは、主に以下の2つの関数に焦点を当てます:

  1. json_encode()
  2. json_decode()

3. PHP - json_encode()

json_encode() 関数は、PHPの値をJSON形式にエンコード(変換)するために使用されます。

3.1 連想アレイをJSONオブジェクトにエンコードする例

この例では、連想アレイ(Associative Array)をJSONオブジェクトに変換する方法を示します。

<?php
// PHPの連想アレイを定義
$age = array("Peter"=>35, "Ben"=>37, "Joe"=>43);

// JSON形式にエンコードして出力
echo json_encode($age);
?>

3.2 インデックス付きアレイをJSONアレイにエンコードする例

この例では、インデックス付きアレイ(Indexed Array)をJSONアレイに変換する方法を示します。

<?php
// 通常のアレイを定義
$cars = array("Volvo", "BMW", "Toyota");

// JSON形式にエンコードして出力
echo json_encode($cars);
?>

4. PHP - json_decode()

json_decode() 関数は、JSONオブジェクトをPHPのオブジェクト、または連想アレイにデコード(復元)するために使用されます。

4.1 JSONデータをPHPオブジェクトにデコードする例

デフォルトでは、json_decode() はデータをオブジェクトとして返します。

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

// JSONをデコード(デフォルトはオブジェクト型)
var_dump(json_decode($jsonobj));
?>

4.2 JSONデータをPHP連想アレイにデコードする例

関数の第2パラメータを true に設定すると、JSONオブジェクトはPHPの連想アレイとしてデコードされます。

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

// 第2引数にtrueを指定して連想アレイとして取得
var_dump(json_decode($jsonobj, true));
?>

5. デコードされた値へのアクセス

デコードされたデータが「オブジェクト」か「連想アレイ」かによって、値へのアクセス方法が異なります。

5.1 PHPオブジェクトから値にアクセスする例

オブジェクトの場合は、アロー演算子(->)を使用します。

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

$obj = json_decode($jsonobj);

// プロパティとしてアクセス
echo $obj->Peter;
echo $obj->Ben;
echo $obj->Joe;
?>

5.2 PHP連想アレイから値にアクセスする例

連想アレイの場合は、通常の配列アクセス([])を使用します。

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

$arr = json_decode($jsonobj, true);

// キーを指定してアクセス
echo $arr["Peter"];
echo $arr["Ben"];
echo $arr["Joe"];
?>

6. 値のループ処理

foreach ループを使用して、デコードされたすべての値を走査することができます。

6.1 PHPオブジェクトの値をループする例

オブジェクトに対してループ処理を行う方法です。

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

$obj = json_decode($jsonobj);

foreach($obj as $key => $value) {
  echo $key . " => " . $value . "<br>";
}
?>

6.2 PHP連想アレイの値をループする例

連想アレイに対してループ処理を行う方法です。

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

$arr = json_decode($jsonobj, true);

foreach($arr as $key => $value) {
  echo $key . " => " . $value . "<br>";
}
?>