У меня есть этот php-файл, который получает точки (id, name, geolocation) из london. Проблема в том, что я получаю правильные результаты как json-формат, но когда я его декодирую и пытаюсь get to содержит массив результатов. Я получаю сообщение об ошибке. Как я могу получить данные из атрибута '/ location/location/contains'?PHP с freebase/location/содержит
<!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>
Можете ли вы показать нам ошибку, которую вы получаете? Случается ли это только с/en/london как $ fid, или это происходит с любым идентификатором местоположения? –
Я получаю правильный ответ от freebase как формат json, например (с ограничением) {"code": "/ api/status/ok", "result": [{"/ location/location/contains": [{"/location/location/geolocation ": [{"/location/geocode/latitude ": 51.533299999999997,"/location/geocode/longitude ": -0.16669999999999999}]," id ":"/en/london_borough_of_camden "," name ": «London Borough of Camden»}], «id»: «/ en/london»}], «status»: «200 OK», «transaction_id»: «cache; cache03.p01.sjc1: 8101; 2011-12- 27T17: 04: 01Z; 0047 "} – fokion
, но когда я делаю это как массив, я не могу получить идентификатор мест в«/location/location/contains » – fokion