我正在使用开放图形api检索用户朋友ID的数组。
$friends = $facebook->api('/me/friends?limit=2000');
$friendsList = array();
foreach ($friends as $key=>$value)
{
foreach ($value as $fkey=>$fvalue) {
$friendsList[] = $fvalue[id];
}
}
我遇到的问题是,无论我放入限制内容,我只会为拥有超过500个朋友的用户收到最多500个朋友ID值。我一直在阅读Facebook开发者信息中的限制和分页,但没有运气。
关于检索所有用户的朋友ID需要做什么的任何想法?为什么数组中的最后一个值显示为“h”?所有其他值都是id。
感谢!!!
答案 0 :(得分:3)
为什么数组中的最后一个值显示为“h”?
因为你在循环中进行循环。
在外部循环中,您将迭代实际API响应的两个属性 - data
和paging
。
然后,在内部循环中,您将浏览这些属性指向的每个数组。这是以名称和身份的形式出现的很多结果;然后内部循环第二次遍历paging
属性指向的数组,并且只有一个属性具有名称/ key next
和值https://graph.facebook.com/…
现在,由于您正在使用$fvalue[id]
对第一个值尝试基于索引的访问,因为$fvalue
实际上包含文本文字https://graph.facebook.com/…
,并且没有名为{{1}的内容声明,PHP首先解释,好像id
一样,然后将此字符串值转换为整数"id"
,以便在0
上进行基于索引的访问。这样就可以了 - 因为PHP还允许在基于索引的字符串变量中访问字节( not 字符) - 第一个字节,其ASCII表示形式为字符$fvalue
...
所以,你想要做的事情实际上只是循环一次,而是直接覆盖h
的内容。
答案 1 :(得分:1)
如果您只需要facebook id,那么您应该尝试使用id字段,它应该返回所有朋友ID。有了这个我记得我的应用程序处理了一个有1500个朋友的用户。
$friends = $facebook->api('/me/friends?fields=id');