我试图在不使用PHP SDK的情况下使用Facebook应用返回用户的好友列表。 我已设法返回用户名,性别等,而不使用身份验证代码。我现在正在尝试返回一个名为用户朋友的名单,所有我设法到目前为止都是打印数组,我似乎只打印名称,因为它的布局与用户名,性别等不同。我设法回应:
$user->name
但是当我为朋友列表尝试它时它不起作用并且根本不回应任何东西,我只是想知道是否有人知道我是怎么做的?
使用print_r我得到以下内容:
Array(
[0] => Array ( [name] => Friend's name [id] => x )
[1] => Array ( [name] => Friend's name [id] => x )
[2] =>....)
直到所有朋友都被列入名单。
{ "name": "Name",
"hometown": {
"id": "Hometown_id",
"name": "Hometown"
},
"id": "Friend_id" }
上面是每个数组的结构,我认为一个潜在的问题是不是每个人都有一个家乡设置,这可能是我收到forEach错误的原因?
答案 0 :(得分:1)
鉴于数组结构,获得你想要的东西非常简单(在php中)。我建议您阅读arrays上的php手册。
试试这样的事情:
foreach ($array as $inner_array) {
echo $inner_array['name'] . "<br />";
}
除此之外,它会......
echo $your_array[0]['name'];
echo $your_array[1]['name'];
等等第四......
<强>更新强>
你现在看的不是一个数组,而是一个javascript对象。它被称为 JSON :Javascript Object Notation。
您需要一个特殊的解析器来将其解释为一个数组:json_decode()
,它附带的php大于或等于5.2.0。要使数组关联,必须传递第二个参数,布尔值true
。否则默认为false
。用法示例:
$json = '{ "name": "Name",
"hometown": {
"id": "Hometown_id",
"name": "Hometown"
},
"id": "Friend_id" }';
$json_arr = json_decode($json,true);
foreach ($json_arr as $key => $var) {
if (!is_array($var)) {
if ($key == 'name') {
echo $var . "<br />";
}
}
}
更新2:
foreach ($json_arr as $key => $var) {
if (!is_array($var)) {
if ($key == 'name') {
echo "Name: " . $var . "<br />";
}
}
else {
if ($key == 'hometown') {
echo "Hometown: " . $var['name'] . "<br />";
}
}
}
以上应该做你需要的。
答案 1 :(得分:0)
从Facebook查询特定数据的最佳方式是FQL。查看https://developers.facebook.com/docs/technical-guides/fql/,如果您正在寻找,请告诉我。
我提供的链接上的示例将抓住所有活跃用户的朋友。如果您将示例用作启动器(已填写适用于您的应用的所有适当信息以及有效的访问令牌),请转到其中显示// run fql query
的区域并将uid2
更改为{{ 1}}在以下行中:
name
将以下内容添加到脚本末尾会将所有朋友的名称填充到名为fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()
$names
这有助于你做你想做的事吗?让我知道:))