0

我这里有一个使用 Facebook API 的 PHP 页面。

我要做的是(在用户设置权限后),通过以下方式获取用户朋友的用户 ID:$facebook->api('/me/friends')。问题是,我只想随机获得 10 个朋友。我可以通过使用轻松地将结果限制为 10 /me/friends?limit=10,但话又说回来,这不是随机的。

所以这就是我现在所拥有的:

     $friendsLists = $facebook->api('/me/friends');

     function getFriends($friendsLists){
       foreach ($friendsLists as $friends) {
          foreach ($friends as $friend) {
             // do something with the friend, but you only have id and name
             $id = $friend['id'];
             $name = $friend['name'];
        shuffle($id);
     return "@[".$id.":0],";
          }
       }
     }

$friendsies = getFriends($friendsLists);
$message = 'I found this Cover at <3 '.$Link.'

'.$friendsies.' check it out! :)';

我已经尝试过 shuffle(),以及这里的第一个选项:https ://stackoverflow.com/a/1656983/1399030 ,但我认为我可能做错了,因为他们没有返回任何东西。我很确定我已经很接近了,但是到目前为止我尝试过的方法都不起作用。可以做到吗?

4

1 回答 1

1

你会想在你 foreach 之前使用洗牌,这样你就可以真正洗牌了。

之后,您将希望限制为 10 个朋友。我建议添加一个 $i var 数到十,然后添加到一个新数组中。

像这样的东西:

function getFriends($friendsLists){
   $formatted_friends = array();
   $i = 0;
   foreach ($friendsLists as $friends) {
      // I'm guessing we'll need to shuffle here, but might also be before the previous foreach
      shuffle($friends);
      foreach ($friends as $friend) {
         // do something with the friend, but you only have id and name
         // add friend as one of the ten
         $formatted_friends[$i] = $friend;
         // keep track of the count
         $i++;
         // once we hit 10 friends, return the result in an array
         if ($i == 10){ return $formatted_friends; }
      }
   }
 }

请记住,它会返回一个数组,而不是可以在回显中使用的字符串。如果需要,可以将其放入 echo 以进行调试:

echo 'friends: '.print_r($friendsies, true);
于 2012-06-15T22:45:14.690 回答