WebAPIなどでJSONデータを取得後、PHPで利用する方法について紹介します。
目次
json_decode関数
JSONデータをPHPで利用するためには、json_decode関数
を利用します。
json_decode関数
の第2引数の指定に伴い、戻り値が配列形式
になるかオブジェクト形式
になるか決定されます。
配列形式で取得
$array = json_decode( $json , true );
「第2引数をtrueにする」と配列形式で取得できます。配列形式では、$array[‘key’]といった形でデータにアクセスします。
オブジェクト形式で取得
$obj = json_decode( $json , false );
$obj = json_decode( $json );
「第2引数をfalseにする」か「第2引数を指定しない」とオブジェクト形式で取得できます。オブジェクト形式では、$obj->key
のようにアロー演算子(->)
を使いデータにアクセスします。
サンプル
下記サンプルでは、「HeartRails Geo API」を利用してます。「東京都」 に存在する市区町村名の一覧をJSON形式で取得し、json_decode関数
を通すことでPHPで扱えるようにしています。ちなみにfile_get_contents関数
を利用してますが、これはファイルの内容を全て文字列として読み込む関数です。
配列形式で取得
$url = "http://geoapi.heartrails.com/api/json?method=getCities&prefecture=%E6%9D%B1%E4%BA%AC%E9%83%BD";
$json = file_get_contents($url);
$arr = json_decode($json,TRUE);
if ($arr === NULL) {
return;
}else{
var_dump($arr['response']['location']);
}
array (size=66)
0 =>
array (size=2)
'city' => string '千代田区' (length=12)
'city_kana' => string 'ちよだく' (length=12)
1 =>
array (size=2)
'city' => string '中央区' (length=9)
'city_kana' => string 'ちゅうおうく' (length=18)
2 =>
array (size=2)
'city' => string '港区' (length=6)
'city_kana' => string 'みなとく' (length=12)
(以下省略)
オブジェクト形式で取得
$url = "http://geoapi.heartrails.com/api/json?method=getCities&prefecture=%E6%9D%B1%E4%BA%AC%E9%83%BD";
$json = file_get_contents($url);
$obj = json_decode($json);
if ($obj === NULL) {
return;
}else{
var_dump($obj->response->location);
}
array (size=66)
0 =>
object(stdClass)[3]
public 'city' => string '千代田区' (length=12)
public 'city_kana' => string 'ちよだく' (length=12)
1 =>
object(stdClass)[4]
public 'city' => string '中央区' (length=9)
public 'city_kana' => string 'ちゅうおうく' (length=18)
2 =>
object(stdClass)[5]
public 'city' => string '港区' (length=6)
public 'city_kana' => string 'みなとく' (length=12)
(以下省略)