2011-06-17 18 views
1

私はCodeIgniterのウェブサイトでgapiクラスを使用しています。私はこの実装を使用しています:PHP json_encode gapi(google analytics)配列が空の値を返します

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

は、これは完璧に動作配列を返します。しかし、これは返す

$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); 

を:私は私のjsファイルにそれを渡したいと私はそうのようにこれをやっている

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

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は、プリミティブ、数値インデックス配列、および連想配列の処理方法を知っています。これは上記のいずれにも該当しません。

2

json_encode()はうまくオブジェクトを処理することができ、しかし、gapiReportEntryオブジェクトのすべてのプロパティがプライベートjson_encode()のみ公共性質を示します。

これは、json-array内のすべての空のオブジェクト{}について説明しています。

1

変更gapi.php

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

でPUBLICによるPRIVATE!

関連する問題