如何在Facebook图形api中过滤男性和女性ID

时间:2012-08-18 15:36:23

标签: php facebook facebook-graph-api

我知道如何通过

检查身份证是男性还是女性
<?php
 //get the user gender 
        $user_id = $facebook->getUser();
        $user_profile = $facebook->api('/me','GET');
        $user_gender = $user_profile['gender'];
        echo "Gender: " . $user_gender;
?>

但我需要获得任何10个女性身份证或10个男性身份证。(不混合)。有什么想法吗?

ps:我不想要fql

3 个答案:

答案 0 :(得分:3)

我知道你说没有FQL,但万一你无法获得非FQL答案:

SELECT sex, uid
FROM user
WHERE uid IN (
  SELECT uid2
  FROM friend
  WHERE uid1 = me()
)
AND sex = 'female'
LIMIT 10

答案 1 :(得分:2)

那么你的问题不是很清楚你在尝试获取用户ID的位置。 我假设您要分离朋友的ids 。 首先检索朋友列表:

$f=$facebook->api('/me/friends',array('access_token'=>$accessToken));

然后定义两个数组:male=new array();female=new array();。循环检查每个朋友的性别:

foreach($f as $t){
   $usr=$facebook-api("/$t['id']");
       if($usr['gender']=='male')
           $male[]=$usr['id'];
       else 
           $female[]=$usr['id']; 
}

在循环结束时,您将在各自的数组中包含所有男性和女性

答案 2 :(得分:0)

我开发了一个简单/干净的代码来解决你所暴露的内容,只需要一个请求。

  1. 创建数组(男性,女性)
  2. 请求获取ID和性别(?fields = id,gender)
  3. 循环数据和条件(男性,女性)
  4. 
        // Array Friends 
        $female_friends = array();
        $male_friends   = array();
    
        // Make request
        $friends = $facebook->api('/me/friends?fields=id,gender');
    
        // Loop
        foreach ($friends['data'] as $friend) {
            if   ($friend['gender'] =='female') female_friends.push($friend['id']);
            else ($friend['gender'] =='male')   male_friends.push($friend['id']);
        }
    
        // Show data
        print_r($female_friends);
        print_r($male_friends);