Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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
PHP-解析Facebook Post JSON_Php_Json_Parsing_Facebook Graph Api - Fatal编程技术网

PHP-解析Facebook Post JSON

PHP-解析Facebook Post JSON,php,json,parsing,facebook-graph-api,Php,Json,Parsing,Facebook Graph Api,我真的很难从Facebook的Graph API解析JSON数据。我正在使用file\u get\u contents和json\u decode对对象进行解码 $json = file_get_contents($facebook_url); $obj = json_decode($json, true); 以下是一些JSON示例: { "data": [ { "place": { "id": "134972803193847", "name":

我真的很难从Facebook的Graph API解析JSON数据。我正在使用
file\u get\u contents
json\u decode
对对象进行解码

$json = file_get_contents($facebook_url);
$obj = json_decode($json, true);
以下是一些JSON示例:

{
"data": [
  {
     "place": {
        "id": "134972803193847",
        "name": "University of Southern California",
        "location": {
           "city": "Los Angeles",
           "country": "United States",
           "latitude": 34.021142052439,
           "longitude": -118.28519155575,
           "state": "CA",
           "street": "3551 Trousdale Pkwy",
           "zip": "90089"
        }
     },
     "picture": "https://fbcdn-vthumb-a.akamaihd.net/hvthumb-ak-xtf1/v/t15.0-10/xxxxxxxx",
     "id": "xxxxxxxxxx",
     "created_time": "2015-06-12T02:26:04+0000"
  },
  {
     "place": {
        "id": "74286767824",
        "name": "Los Angeles International Airport (LAX)",
        "location": {
           "city": "Los Angeles",
           "country": "United States",
           "latitude": 33.943998965589,
           "longitude": -118.402533192,
           "state": "CA",
           "street": "1 World Way",
           "zip": "90045"
        }
     },
     "picture": "https://scontent.xx.fbcdn.net/hphotos-xat1/v/t1.0-9/xxxxxxx",
     "id": "xxxxxxxx12321",
     "created_time": "2015-06-06T22:57:49+0000"
  },
],
"paging": {
  "previous": "https://graph.facebook.com/v2.3/wfefwfwefwe",
  "next": "https://graph.facebook.com/v2.3/fweewfwef"
}
}
我尝试过各种解决方案,但
echo
一直在打印“Array”

我试图为每个帖子获取一些字段,比如id、姓名、城市、国家、纬度、经度、州、创建时间、图片

我试过这个,它只是打印了很多次“数组”。我知道这是一个简单的JSON解析/PHP问题

foreach($obj['data'] as $chunk) {
  foreach($chunk['place'] as $place) {      
    $fbid   = $place['id'];
    $name = $place['name'];
    $location = $place['location'];
    $city = $location['city'];
    $country = $location['country'];
    $latitude = $location['latitude'];
    $longitude = $location['longitude'];
    $state = $location['state'];
    $tuple = array($fbid, $name, $city, $country, $latitude, $longitude, $state);
    echo $tuple . "\n";
  }
}

echo
打印
Array()
,因为您正在将数组强制转换为字符串

要以可读格式打印数组,请使用
print\r($obj)然后,要打印第一个位置的id,例如,使用
echo$obj['data'][0]['place']['id']或循环遍历所有位置并打印每个id使用

foreach ($obj['data'] as $a) {
    echo $a['place']['id'];
}
您可以在PHP手册页面上找到有关打印的更多信息。

您的输出是一个对象。因此,您不能通过
[
访问对象

试试这个:

foreach($obj->data as $chunk) {

    $fbid   = $chunk->place->id;
    $name = $chunk->place->name;
    $location = $chunk->place->location;
    $city = $location->city;
    $country = $location->country;
    $latitude = $location->latitude;
    $longitude = $location->longitude;
    $state = $location->state;
    $tuple = array($fbid, $name, $city, $country, $latitude, $longitude, $state);
    print_r( $tuple);

}
输出:

Array
(
    [0] => 134972803193847
    [1] => University of Southern California
    [2] => Los Angeles
    [3] => United States
    [4] => 34.021142052439
    [5] => -118.28519155575
    [6] => CA
)
Array
(
    [0] => 74286767824
    [1] => Los Angeles International Airport (LAX)
    [2] => Los Angeles
    [3] => United States
    [4] => 33.943998965589
    [5] => -118.402533192
    [6] => CA
)

当您需要打印数组时,您不能使用
echo
。您应该使用or。

此代码向我发出警告,表示我正在将不正确的对象传递到foreach循环:/