パースしたいのは以下のデータ。
test.json
{ "data": [ { "name": "Zardoz", "category": "Movie", "id": "104051962963937", "created_time": "2011-07-20T13:52:28+0000" }, { "name": "Kin-dza-dza!", "category": "Movie", "id": "103738062997598", "created_time": "2011-07-20T13:52:27+0000" }, { "name": "A Clockwork Orange", "category": "Movie", "id": "118843458195668", "created_time": "2011-07-20T13:52:26+0000" }, { "name": "Brazil", "category": "Movie", "id": "109706182389863", "created_time": "2011-07-20T13:52:25+0000" } ], "paging": { "next": "https://graph.facebook.com/me/movies?access_token=AAAAAAITEghMBAOOcr9RKGxhqB4FOvNBriuIWYWMpoD9OAPluKCQ54LPkCo1IXTik205VNXDUNZCjhyZAuL8P2EZAX1pCX0YXIFqX1LDCfjhj0tcXG5ZC&limit=5000&offset=5000&__after_id=109706182389863" } }
型の確認はgettype()を使う。
http://www.phpbook.jp/func/var/index1.html
クラスの確認はget_class()を使う。
http://php.xenophy.com/class/index.html
json_decode($hoge,true)で連想配列に直してから
foreachでイテレータを回すのが策か。
(Rubyのときと同じアプローチ)
#! /usr/bin/php <?php $json = file_get_contents("test.json"); $obj = json_decode($json,true); foreach ($obj as $key => $value) { echo "*first layer*<br />\n"; echo "$key ... $value<br />\n"; foreach($value as $key => $value){ echo " **second layer**<br />\n"; echo " $key ... $value<br />\n"; foreach($value as $key => $value){ echo " ***third layer***<br />\n"; echo " $key ... $value<br />\n"; } } } ?>
出力
*first layer*<br /> data ... Array<br /> **second layer**<br /> 0 ... Array<br /> ***third layer***<br /> name ... Zardoz<br /> ***third layer***<br /> category ... Movie<br /> ***third layer***<br /> id ... 104051962963937<br /> ***third layer***<br /> created_time ... 2011-07-20T13:52:28+0000<br /> **second layer**<br /> 1 ... Array<br /> ***third layer***<br /> name ... Kin-dza-dza!<br /> ***third layer***<br /> category ... Movie<br /> ***third layer***<br /> id ... 103738062997598<br /> ***third layer***<br /> created_time ... 2011-07-20T13:52:27+0000<br /> **second layer**<br /> 2 ... Array<br /> ***third layer***<br /> name ... A Clockwork Orange<br /> ***third layer***<br /> category ... Movie<br /> ***third layer***<br /> id ... 118843458195668<br /> ***third layer***<br /> created_time ... 2011-07-20T13:52:26+0000<br /> **second layer**<br /> 3 ... Array<br /> ***third layer***<br /> name ... Brazil<br /> ***third layer***<br /> category ... Movie<br /> ***third layer***<br /> id ... 109706182389863<br /> ***third layer***<br /> created_time ... 2011-07-20T13:52:25+0000<br /> *first layer*<br /> paging ... Array<br /> **second layer**<br /> next ... https://graph.facebook.com/me/movies?access_token=AAAAAAITEghMBAOOcr9RKGxhqB4FOvNBriuIWYWMpoD9OAPluKCQ54LPkCo1IXTik205VNXDUNZCjhyZAuL8P2EZAX1pCX0YXIFqX1LDCfjhj0tcXG5ZC&limit=5000&offset=5000&__after_id=109706182389863<br />