PHPで配列とJSONの変換

こんにちは、さるまりんです。

以前PHPでJSONを返すプログラムを書きました。

その時、配列をjsonにするためにjson_encode()関数を使いました。
では反対にjsonを配列にするにはどうするかのメモです。
まずは元配列の作成です。
$original = [
    'num1' => 1,
    'num2' => 2,
    'strings' => [
        'str1' => 'hello',
        'str2' => 'world',
        'str3' => "I'm fine"
    ]
];
これをprint_r()で出力するとこうなります。
Array
(
    [num1] => 1
    [num2] => 2
    [strings] => Array
        (
            [str1] => hello
            [str2] => world
            [str3] => I'm fine
        )

)
まずはそれをjsonにします。
$json = json_encode($original);
この$jsonには次のような文字列が格納されています。
{
	"num1": 1,
	"num2": 2,
	"strings": {
		"str1": "hello",
		"str2": "world",
		"str3": "I'm fine"
	}
}
(読みやすいように改行しています。)
この$jsonを配列にします。
$data = json_decode($json, true);
$dataprint_r()で出力するとこうなります。
Array
(
    [num1] => 1
    [num2] => 2
    [strings] => Array
        (
            [str1] => hello
            [str2] => world
            [str3] => I'm fine
        )

)
元に配列に戻りました。
このjson_decode()関数の二つ目の引数にtrueを指定することで、結果を連想配列で取得します。
これを省略するかfalseを指定するとstdClassのオブジェクトで取得します。
$data = json_decode($json);
上記で取得した結果をprint_r()するとこうなります。
stdClass Object
(
    [num1] => 1
    [num2] => 2
    [strings] => stdClass Object
        (
            [str1] => hello
            [str2] => world
            [str3] => I'm fine
        )

)
JSONのAPIはよく利用するので、覚えておきたいです。
なぜ忘れるんだろう?
読んでくださってありがとうございました。
それではまた!