我正在创建一个像eventbrite.com.这样的事件列表网站有组织者可以创建活动,也有用户可以注册活动。
用户需要通过Facebook登录到系统。在这种情况下,我可以存储他们的facebook_id。
我的问题是,如何获得特定用户的朋友列表(参加活动的朋友)并显示在活动下面?
其实我有个主意:
解决方案I
当登录用户参加事件时,我可以使用事件id保存他的facebook_id。
事件添加表
facebook_id \\-事件_id
42343453424 - 08
34534534544 - 08
23424243224 - 10
当另一个用户登录时,我可以让他的朋友facebook_ids,并尝试匹配事件附加表。
示例:
user_friend_list = 42343453424,23424243224,4345345345,245345433,...etc
我必须从user_friend_list数组(42343453424)中获得第一个用户,并在事件添加表中搜索,第二个用户(23424243224)和第三个用户等等。
这个方法需要运行大量的循环和查询。这将导致网站的巨大延迟。
有人能给我一个更好的解决办法吗?
提前感谢!
-PS
发布于 2012-08-16 22:33:57
与其运行所有这些单独的数据库命中,不如将1查询中的事件的所有参与者带回到一个数组中。然后获取所有的用户朋友,并将它们存储在另一个数组中。最后,循环遍历与会者列表,并使用in_array方法检查当前与会者是否在朋友数组中。然后,您可以将这些存储在第三个数组中,即所有匹配的朋友。
e.g
$matching = array();
$attending = array(); // This is populated from your database
$friends = array(); // This would be populated from their facebook friendlist
$foreach($attending as $attendee){
if(in_array($attendee, $friends)){
// This attendee is present in their friends list so add them to matching
$matching[] = $attendee;
}
}
//Loop through matching to show all the friends who are attending.
https://stackoverflow.com/questions/11999434
复制相似问题