2011-06-24 9 views
0

FacebookのグラフAPIから送信されたデータにCURLとJsonを使用してアクセスする方法を学びたいと思っています。カールを使用してjsonツリーの深いレベルにアクセスするにはどうすればよいですか?

私はポストデータを引き出し、以下の機能を使用しています:

function loadFB($fbID){ 
     $url="https://graph.facebook.com/".$fbID."/feed?limit=1&access_token=xxxx"; 
     $c = curl_init($url); 
     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     $page = json_decode(curl_exec($c)); 
     curl_close($c); 
     $post=reset($page->data); 

     if($post->message == '') { 

     $post_msg = '<a href="' . $post->link . '">' . $post->name . '</a>'; 

     } else { 

     $post_msg = $post->message; 

     } 

     return $post_msg; 
} 

例JSONデータは、次のようになります。

{ 
"data": [ 
    { 
    "id": "xxxx", 
    "from": { 
     "name": "xxx", 
     "category": "xxx", 
     "id": "xxx" 
    }, 
    "picture": "xxxxxxxxx", 
    "link": "xxxxxxx", 
    "name": "Event name goes here", 
    "properties": [ 

     { 
      "text": "Friday, July 15, 2011 at 4:00pm" 
     }, 
     { 
      "text": "Venue Name" 
     } 
    ], 
    "icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yW/r/r28KD-9uEMh.gif", 
    "type": "link", 
    "object_id": "xxx", 
    "created_time": "2011-06-23T06:46:17+0000", 
    "updated_time": "2011-06-23T06:46:17+0000", 
    "likes": { 
     "data": [ 
      { 
       "name": "xxxx", 
       "category": "xxx", 
       "id": "xxxx" 
      } 
     ], 
     "count": 1 
    } 
    } 
], 
"paging": { 
    "previous": "xxxxx", 
    "next": "xxx" 
} 
} 

現状では、私はページのメッセージを取得することができますまたはイベントのイベント名とリンクを取得することができます。

しかし、イベントの日付や会場名などを検索する場合はどうすればよいですか?それはもう一つの層の '特性'の下にあります。

私のコードでは、$ post-> messageを使って最初のレベルのものにアクセスできますが、$ post-> properties-> textを試してみるとこれはうまくいかないので、これは機能します。それに加えて、「プロパティ」には2つの「テキスト」があり、これらのものにアクセスする方法が混乱しています。

任意のポインタ?

答えて

2

$post->propertiesはとても配列です:

$post->properties[0]->text; 
0

上記データ内のプロパティは、あなたがxは、最初の項目と2番目の項目のための1、などのために0である$post->properties[x].textをしたいので、インデックス付きの配列です...