Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook API-返回好友列表(PHP数组)_Php_Facebook_Facebook Graph Api - Fatal编程技术网

Facebook API-返回好友列表(PHP数组)

Facebook API-返回好友列表(PHP数组),php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我正在尝试返回一个使用Facebook应用程序而不使用PHP SDK的用户的好友列表。 我已设法返回用户名、性别等,而不使用验证码。我现在正试图返回一个用户朋友的姓名列表,目前为止我所能做的就是打印数组,我似乎不能只打印姓名,因为它的布局与用户名、性别等不同。我通过以下操作实现了回应: $user->name 但当我尝试在朋友列表中使用它时,它不起作用,也没有任何回应,我只是想知道是否有人知道我是如何做到这一点的 使用print\r,我得到以下信息: Array( [0] => A

我正在尝试返回一个使用Facebook应用程序而不使用PHP SDK的用户的好友列表。 我已设法返回用户名、性别等,而不使用验证码。我现在正试图返回一个用户朋友的姓名列表,目前为止我所能做的就是打印数组,我似乎不能只打印姓名,因为它的布局与用户名、性别等不同。我通过以下操作实现了回应:

$user->name
但当我尝试在朋友列表中使用它时,它不起作用,也没有任何回应,我只是想知道是否有人知道我是如何做到这一点的

使用print\r,我得到以下信息:

Array(
[0] => Array ( [name] => Friend's name [id] => x )
[1] => Array ( [name] => Friend's name [id] => x )
[2] =>....)
直到所有的朋友都被列出



上面是每个数组的结构,我认为一个潜在的问题是不是每个人都有一个家乡集,这可能是我收到forEach错误的原因?

从Facebook查询特定数据的最佳方法是FQL。检查一下,让我知道这是否是你要找的

我提供的链接上的示例将抓取所有活动用户的朋友。如果您使用该示例作为启动程序(已为您的应用程序填写了所有正确的信息以及有效的访问令牌),则转到显示有
//运行fql query
的区域,并在下一行中将
uid2
更改为
name

fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()
将以下内容添加到脚本末尾将把所有朋友的名字填充到名为
$names

$r = $fql_multiquery_obj['data'][0]['fql_result_set'];
foreach ($r as $u)
{
    $name[count($name)] = $u['name'];
}

这有助于你做你想做的事吗?让我知道:)

从Facebook查询特定数据的最佳方法是FQL。检查一下,让我知道这是否是你要找的

我提供的链接上的示例将抓取所有活动用户的朋友。如果您使用该示例作为启动程序(已为您的应用程序填写了所有正确的信息以及有效的访问令牌),则转到显示有
//运行fql query
的区域,并在下一行中将
uid2
更改为
name

fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()
将以下内容添加到脚本末尾将把所有朋友的名字填充到名为
$names

$r = $fql_multiquery_obj['data'][0]['fql_result_set'];
foreach ($r as $u)
{
    $name[count($name)] = $u['name'];
}

这有助于你做你想做的事吗?让我知道:)

鉴于这种数组结构,获取所需内容(在php中)非常简单。我建议您阅读php的操作手册

试着这样做:

foreach ($array as $inner_array) {
    echo $inner_array['name'] . "<br />";
}
以此类推

更新:

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 />";
        }
    }
}
您现在看到的不是一个数组,而是一个javascript对象。它被称为JSON:Javascript对象表示法

您需要一个特殊的解析器将其解释为数组:,它是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 />";
        }
    }
}
$json='{“name”:“name”,
“故乡”:{
“id”:“家乡id”,
“姓名”:“家乡”
}, 
“id”:“Friend_id”}';
$json_arr=json_decode($json,true);
foreach($json_arr as$key=>$var){
如果(!is_数组($var)){
如果($key=='name'){
echo$var.“
”; } } }
更新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 />";
        }
    }
}
foreach($json\u arr as$key=>$var){
如果(!is_数组($var)){
如果($key=='name'){
echo“Name:.$var.”
; } } 否则{ 如果($key==“家乡”){ echo“家乡:”.$var['name'].“
”; } } }

以上内容应该可以满足您的需要。

鉴于这种数组结构,获得所需内容(在php中)非常简单。我建议您阅读php的操作手册

试着这样做:

foreach ($array as $inner_array) {
    echo $inner_array['name'] . "<br />";
}
以此类推

更新:

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 />";
        }
    }
}
您现在看到的不是一个数组,而是一个javascript对象。它被称为JSON:Javascript对象表示法

您需要一个特殊的解析器将其解释为数组:,它是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 />";
        }
    }
}
$json='{“name”:“name”,
“故乡”:{
“id”:“家乡id”,
“姓名”:“家乡”
}, 
“id”:“Friend_id”}';
$json_arr=json_decode($json,true);
foreach($json_arr as$key=>$var){
如果(!is_数组($var)){
如果($key=='name'){
echo$var.“
”; } } }
更新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 />";
        }
    }
}
foreach($json\u arr as$key=>$var){
如果(!is_数组($var)){
如果($key=='name'){
echo“Name:.$var.”
; } } 否则{ 如果($key==“家乡”){ echo“家乡:”.$var['name'].“
”; } } }

上面的内容应该可以满足您的需要。

您是否有适当的权限?是的,我使用oauth_令牌,我可以打印整个数组,但我只需要名称。您为什么不以php中的正常方式访问数组?对不起,您的意思是什么?您正在做什么来尝试访问这些名称?只是检查一下,但是你使用的是$arr[0]['name']而不是$arr['name']或$arr[0],对吗?你有适当的权限吗?是的,我使用oauth_令牌,我可以打印整个数组,但我只需要名称。你为什么不以php中的正常方式访问数组呢?对不起,你是什么意思?你在做什么来获取这些名字?只是检查一下,但您使用的是$arr[0]['name']而不是$arr['name']或$arr[0],对吗?正是我想要的,只是现在尝试一下,效果非常好。非常感谢!:)抱歉,我刚刚意识到我需要包含一些朋友详细信息,因此无法使用“/me/friends/”,并且必须使用API中的官方URL,该URL以类似数组返回不同的信息。我有一只蜜蜂