PHP - よく使う関数 - json

クラウディア 
1. 概要
2. 出力
3. 入力

1. 概要

 今や、マシン間のデータ受け渡しや、コンフィグレーションファイルとして重宝している、「.json」形式。  「.ini」や「.xml」から「.json」へと置き換わっているものもあるようです。  「PHP」でも、「.json」形式が扱えるようです。  公式の説明は、以下にあります。
PHP: JSON - Manual
 また、本ページは、下記のサイトを参考にさせていただきました。
【PHP】MySQL に保存しているデータを JSON で吐き出す」
「PHP で JSON データの取得の仕方

2. 出力


<?php
chdir(dirname(__FILE__));

$array = array();
$array[] = array('name' => 'hogehoge', 'age' => 20 );
$array[] = array('name' => 'fugafuga', 'age' => 21 );

$file = fopen("array.json", "w");

if (flock($file, LOCK_EX))
{
	$date = fwrite($file, json_encode($array));
	flock($file, LOCK_UN);
}

fclose($file);
 というソースを書いて実行すると、下記の「.json」ファイルを出力します。

[{"name":"hogehoge","age":20},{"name":"fugafuga","age":21}]

3. 入力

 前項で作成したファイルを読み込むソースを書いてみます。

<?php
chdir(dirname(__FILE__));

$file = fopen("array.json", "r");
$json = NULL;

if (flock($file, LOCK_EX))
{
	$json = fgets($file);
	flock($file, LOCK_UN);
}

fclose($file);

$array = json_decode($json, true);

print_r($array);
 というソースを書いて実行すると、下記の結果が得られます。

Array
(
    [0] => Array
        (
            [name] => hogehoge
            [age] => 20
        )

    [1] => Array
        (
            [name] => fugafuga
            [age] => 21
        )

)
 もうちょっと複雑な構造であったり、数値や文字列以外の型である場合は、どうなるのか?  そのあたりは、今後の課題になります。
earthcar(アースカー)