2011-07-05 91 views
0

我有麻煩從一個JSON對象的一些數據,我已經轉換到一個數組:JSON解碼幫助PHP

這是我的課:

class tbfe_json_api { 

    var $location; 
    var $latitude; 
    var $longitude; 
    var $searchRadius = 20; // Default to 20 Miles 
    var $reverseGeoCodeJSON; 

    public function __construct() { 

     $this->getLocationParams(); 

     $this->getCoords($this->reverseGeoCodeLocation($this->location)); 

    } 

    public function getLocationParams() { 

     if(isset($_GET['location'])) { 

      $this->location = str_replace(' ', '' , $_GET['location']); 

      if(isset($_GET['radius'])) { 
       $this->searchRadius = $_GET['radius']; 
      } 

     } 
     else { 
      die('Invalid parameters specified for JSON request.'); 
     } 

    } 

    public function reverseGeoCodeLocation($location) { 
     $cURL = curl_init(); 
     curl_setopt($cURL, CURLOPT_URL, 'http://maps.google.com/maps/geo?q='.$location.'&output=json'); 
     curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1); 
     return $this->reverseGeoCodeJSON = curl_exec($cURL); 
     curl_close ($cURL); 
    } 

    public function getCoords($json_data) { 

     $obj = json_decode($json_data, true); 

     var_dump($obj); 

     // I NEED THE COORDINATE VALUES HERE TO PLACE BELOW 

     $this->latitude = ''; 
     $this->longitude = ''; 

    } 

} 

這是我需要的數組工作來自: http://www.thebigfishexperience.org.uk/sources/ajax/venue-json.php?location=london

我需要從數組中檢索座標值並將它們放到我的實例變量中,如上所示。

+1

而且你有什麼問題?這只是一個計算數組結構的問題,然後相應地訪問它。 '$ obj ['Placemark'] [0] ['Point'] ...' –

+0

這是什麼問題?有什麼缺失?另外,json字符串是什麼樣的? – rzetterberg

回答

1

我相信你需要:

$this->latitude = $obj['Placemark'][0]['Point']['coordinates'][0]; 
$this->longitude = $obj['Placemark'][0]['Point']['coordinates'][1]; 
+0

'$ obj ['Placemark'] [0]' –

+0

你是對的。修正 – heximal

0

看看$obj的轉儲並找到您要查找的兩個值。然後將它們引用到你的兩個變量。

$this->latitude = $obj->path->to->value->one; 
$this->longitude = $obj->path->to->value->two; 
+0

非常感謝許多人 - 作品像魅力! –