PHPでJSONをパースする

パースしたいのは以下のデータ。
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 />