2012-03-22 3 views
0

私はfacebookのグラフAPIから画像を取得するためにforeachループを使用しています。ここでforeachループが回避するようにオブジェクトを配列から除外するにはどうすればよいですか?

は私のJSONデコードからのリターンは次のとおりです。

{ 
    "data": [ 
     { 
     "name": "Person 1", 
     "id": "12345678", 
     "picture": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/123456789_123456_789456.jpg" 
     }, 
     { 
     "name": "Person 2", 
     "id": "12345679", 
     "picture": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/123456789_123456_789457.jpg" 
     } 
    ], 
    "paging": { 
     "next": "https://graph.facebook.com/me/friends?access_token=.....&fields=name,id,picture&limit=5000&offset=5000&__after_id=..." 
    } 
} 

ここに私のPHPです:

 $url = "https://graph.facebook.com/". $uid ."/friends?access_token=". $access_token ."&fields=name,id,picture"; 
     $users = json_decode(file_get_contents($url)); 

     echo $access_token .'<br><br>'; 

     foreach ($users as $name => $value) { 
      foreach ($value as $entry) { 
       //Loop for profile pics 
       if ($entry->picture) { 
        echo '<a href="https://www.facebook.com/profile.php?id=' . $entry->id . '" target="_blank">' . '<img src="'. $entry->picture . '" class="profile-thumb' . $entry->name . '" id="'. $entry->id .'"></a>'; 
       } 
      } 
     } 

それは正しく画像へのパスを引くように、これは素晴らしいですが、それは私に、このエラーが発生します:私は仮定

Notice: Trying to get property of non-object in C:\inetpub\wwwroot\feref.com\facebook\test-app\friends.php on line 50 

は、アレイ内の「ページング」オブジェクトの結果です。

どうすればこのエラーを防ぐことができますか?つまり、ループから「ページング」オブジェクトを除外するにはどうすればよいですか?

答えて

1

代わりにif (isset($this->picture))を試してください。これは、ピクチャプロパティが存在するかどうかをテストします。

+0

ビンゴは、歓声バディ – reekogi

1

結果全体を反復処理するのではなく、データ配列に対してのみ反復処理を行います。

$ usersを宣言した後にこの行を追加します。

$data = $users->('data'); 

次に行う

foreach($data as $entry){ 
    if(isset($entry->picture)){ 
     echo ... 
    } 
} 
+0

乾杯の相棒、私は$を使用したデータ= $ users->データ;しかしそれは動作します – reekogi

関連する問題