2012-04-28 62 views
2

编辑:Acessing在返回的数组

<?php 
    $file= 'fbplus.jpg'; 

    $args = array(
     'message' => $album_message, 
    ); 
    $args[basename($file)] = '@' . realpath($file); 
    $ch = curl_init(); 
    $url = $graph_url; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
    $data = curl_exec($ch); 
    //returns the photo id 
    print_r(json_decode($data,true)); 


    echo "$data['id'] "; //wont work 
     echo "$data[id] "; //wont work 


?> 

这是回归后,我成功上传的照片。

阵列([ID] => 112235735579158 [POST_ID] => 100003781972892_112203478915717)

+1

这不是一个协会。阵列?应该是'$ data ['id']'而不是'$ data [id]' – Smamatti 2012-04-28 10:48:40

+0

如果这是数组,那么$ data ['id']应该工作。另外,请使用长时间打开的标签。如果您在未启用短打开标签的服务器上停留一段时间,您可能会后悔。 – Corbin 2012-04-28 10:49:17

+1

@Smamatti,是的,在语法上,'id'应该用引号括起来,但这不是导致问题的原因。 – Nadh 2012-04-28 10:49:38

回答

2

curl_exec()返回一个字符串(网页的内容),而不是一个Array。所以你不能这样做$data['id'],因为$data是一个字符串,而不是一个数组。

您要发布的网址是?它的确切输出是什么?

编辑:看起来像url返回JSON。在这种情况下:

<?php 
    $file= 'fbplus.jpg'; 

    $args = array(
     'message' => $album_message, 
    ); 
    $args[basename($file)] = '@' . realpath($file); 
    $ch = curl_init(); 
    $url = $graph_url; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args); 
    $data = curl_exec($ch); 
    //returns the photo id 

    $data = json_decode($data,true); 

    echo $data['id']; 
?> 
+0

我用这个print_r(json_decode($ data,true));输出是Array([id] => 112265748909490 [post_id] => 100003781972892_112203478915717)。那么为什么它是一个数组? – 2012-04-28 10:58:42

+0

啊,这是一个数组,因为你使用'json_decode()',你在原来的问题中没有提到它。 – Nadh 2012-04-28 11:04:06

+0

我将如何访问阵列? – 2012-04-28 11:08:15

0

您是否正在访问Facebook Graph API?

如果是这样只需使用:

$data = json_decode($data); 

和您可以访问它低谷$data->id

+0

这是我的第一种方法,但仍然$ data-> id是NULL。是图api和$ data = json_decode($ data);已经在我的代码中了。但仍然无法访问数组 – 2012-04-28 10:54:38

+0

@Roxy,默认情况下,'json_decode()'返回一个对象。如果你想获得一个数组,试试'json_decode($ data,true)' – Nadh 2012-04-28 10:59:50

+0

得到它。仍然无法访问它。我编辑我的代码顶部 – 2012-04-28 11:08:50