Как я могу исключить объект из моего массива, чтобы цикл foreach избегал его? - PullRequest
0 голосов
/ 22 марта 2012

Я использую цикл foreach для получения изображений из API-интерфейса графика в Facebook.

Вот возвращение из моего 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

Я полагаю, что это результат использования объекта подкачки в массиве.

Как я могу предотвратить эту ошибку? То есть как я могу исключить объект «пейджинг» из моего цикла?

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Вместо того, чтобы перебирать весь ваш результат, перебирайте только массив данных.

Добавьте эту строку после объявления $ users;

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

Тогда сделай

foreach($data as $entry){
    if(isset($entry->picture)){
        echo ...
    }
}
1 голос
/ 22 марта 2012

Попробуйте if (isset($this->picture)) вместо.Это проверит, существует ли свойство картинки вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...