2011-06-17 72 views
1

我在CodeIgniter網站中使用gapi類。我使用這個實現:PHP json_encode gapi(谷歌分析)數組返回空值

http://jjc.net/2011/google-analytics-api-for-codeigniter/

這將返回完美的作品的數組。我想將它傳遞給我的js和我這樣做,像這樣:

$gapi_arr = array(); 
$gapi_arr = $this->gapi->requestReportData($report_id, array('date'), array('pageviews', 'visits', 'newVisits'), 'date', '', $start_date, $end_date, 1, 366); 

echo json_encode($gapi_arr); 

然而,這將返回:

[{},{},{},{},{}... 

原始數組的GAPI類返回看起來是這樣的:

Array 
(
[0] => gapiReportEntry Object 
    (
     [metrics:gapiReportEntry:private] => Array 
      (
       [pageviews] => 3 
       [visits] => 3 
       [newVisits] => 0 
      ) 

     [dimensions:gapiReportEntry:private] => Array 
      (
       [date] => 20110101 
      ) 

    ) 

[1] => ... 

我只想把這個數組傳遞給我的js,而不用在我的視圖中寫入內聯js代碼。有沒有修復或其他方式來實現這一目標?

回答

-1

給定的數組根本不是數組,看看「gapiReportEntry」,這是一個Object。你應該首先遍歷所有元素並轉換爲基元。

+0

好吧,沒想到這一點很重要,因爲它是一個對象數組。謝謝! –

+0

這不是正確的答案。 – Yahel

0

json_encode知道如何處理primatives,數字索引數組和關聯數組。這不是上述情況。

2

json_encode()可以處理的對象就好了,但是,在gapiReportEntry對象的所有屬性都私人json_encode()只顯示公共性能。

這解釋了json數組中的所有空對象{}

1

更改私下通過公衆gapi.php

class gapiReportEntry 
    { 
     public $metrics = array(); 
     public $dimensions = array(); 
     .... 

完成!