0

我有一个显示用户朋友的框,但是,它显示了所有用户,并从应用程序的画布上延伸出来。我把它们放在盒子里的一张桌子上,有没有限制显示的数量为 12 个随机朋友?

这是我显示朋友的代码:

if ($user) {
$user_profile = $facebook->api('/me');
$friends = $facebook->api('/me/friends');

echo '<table>';
foreach ($friends["data"] as $value) {
    echo '<td>';
    echo '<div class="pic">';
    echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
    echo '</div>';
    echo '<font color="white">','<div class="picName">'.$value["name"].'</div>','</font>';
    echo '</td>';
}
echo '</table>';
}
?>
4

2 回答 2

2

您可以使用 FQL 进行类似 SQL 的查询,以限制和随机化返回的记录。
您的查询将如下所示:

SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY rand() LIMIT 12;

要将 FQL 与 PHP SDK 一起使用,请使用以下格式:

$facebook->api(array(
    'method' => 'fql.query',
    'query' => $fql
));

$fql作为查询。

查看 FQL 的技术指南表格参考

于 2013-05-13T21:30:47.060 回答
1

例如,您可以使用该break语句退出循环。像这样使用它:

if ($user) {
    $user_profile = $facebook->api('/me');
$friends = $facebook->api('/me/friends');

$counter = 1;

echo '<table>';
foreach ($friends["data"] as $value) {
    echo '<td>';
    echo '<div class="pic">';
    echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
    echo '</div>';
    echo '<font color="white">','<div class="picName">'.$value["name"].'</div>','</font>';
    echo '</td>';

    if ($counter >= 12) {
        break;
    }
    $counter = $counter + 1;
}
echo '</table>';
}

更高级的方法是使用array_slice()修改数组的函数。为了最多只能将 12 个元素(从位置 0 开始)$friends['data']放入foreach循环,您可以编写:

// your code...
foreach (array_slice($friends["data"], 0, 12) as $value) {
    // your code...
于 2013-05-13T21:22:23.910 回答