2012-06-15 33 views
0

我在这里是一个PHP页面与Facebook API一起工作。Randomize/Shuffle数组,然后foreach,然后限制到10个结果(Facebook API + PHP)

我想要做的是(在权限由用户设置后),通过$facebook->api('/me/friends')获取用户的朋友的用户ID。问题是,我只想得到随机10位朋友。我可以很容易地通过使用/me/friends?limit=10将结果限制为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! :)'; 

我试图洗牌(),并从这里第一个选项:https://stackoverflow.com/a/1656983/1399030,但我认为因为他们没有我做错了什么回报什么。我很确定我很近,但我迄今为止尝试过的方法并不奏效。可以做到吗?

+0

的可能重复[Facebook的图形API:获得一个随机N的朋友(http://stackoverflow.com/questions/8570459/facebook -graph-api-getting-a-random-n-friends) –

+0

@EvanMulawski希望没有使用FQL查询。由于我已经有了friendslist数组,我只需要知道一种方法来洗牌。 – Mafia

回答

1

你想在foreach之前使用shuffle,以便你实际上洗牌数组。

之后,你会想限制为10个朋友。我建议添加一个$我的变种数到十,并添加到一个新的数组。

事情是这样的:

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 'friends: '.print_r($friendsies, true); 
+0

谢谢@Greg!我只是希望能够得到这些ID,就像我在当前代码中它是如何分开名称和ID一样,然后我可以使用这些ID – Mafia

+0

您好格雷格,用另一个函数就像我原来的那个一样,只是这样我才能分解代码的结果,以便在洗牌后得到ID。所以我通过另一个foreach函数来运行它,但这对我来说并不是很好。我返回单词“数组”,但我想通过我的原始函数运行它,它会打破这个数组,显然我更无知,我认为。 – Mafia

+1

更改此部分以获取ID: $ formatted_friends [$ i] = $ friend; 至: $ formatted_friends [$ i] = $ friend ['id'] ;.当您尝试回显某个数组时,会出现数组字样。如果你在严格模式下使用PHP,它也会抛出警告(因为数组不能被回显)。如果你仍然想回显,你可以像我向你展示的那样使用print_r(),或者为了更高级的格式,你可以尝试一个implode($ friendsies,',')来得到逗号分隔的结果。我想尽管如果你使用朋友ID来完成其他功能,你可能想保留一个数组。 – Greg

相关问题