PHP с freebase / location / содержит - PullRequest
       16

PHP с freebase / location / содержит

0 голосов
/ 27 декабря 2011

У меня есть этот php-файл, который получает точки (id, name, geolocation) Лондона. Проблема в том, что я получаю правильные результаты в формате json, но когда я декодирую его и пытаюсь добраться до него, он содержит массив результатов.получить ошибку. Как я могу получить данные из атрибута / location / location / contains?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>search</title>
</head>

<body>
 <?php
 function freebasequery ($fid){
 $query = array(array('id' => $fid, '/location/location/contains'=>array(array('id'=>NULL,'name' => NULL,'/location/location/geolocation' =>array(array('/location/geocode/longitude' =>NULL,'/location/geocode/latitude' => NULL))))));
$query_envelope = array('query' => $query);
$service_url = 'http://api.freebase.com/api/service/mqlread';
$url = $service_url . '?query=' . urlencode(json_encode($query_envelope));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
return $response;
 }
 $points=freebasequery('/en/london');
//echo $points;
 $results=json_decode($points)->result;
foreach($results as $poi){
    echo $poi->id;
    $contains="/location/location/contains";
    $poisarray=$poi->$contains;
    foreach($poisarray as $point){
        echo $point->id;
    }
}


 ?>
 </body>
 </html>

1 Ответ

0 голосов
/ 12 февраля 2016

Ошибка на json_decode (требуется истинное значение). Решение:

 json_decode($points,true);

и тогда я могу получить доступ к массиву данных, который я хочу, вот так:

$results["result"][0]["/location/location/contains"];
...