PHP json_encode gapi(谷歌分析)数组返回空值

时间:2011-06-17 16:53:41

标签: php javascript google-analytics json

我在CodeIgniter网站上使用了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代码。是否有修复或其他方法来实现这一目标?

4 个答案:

答案 0 :(得分:2)

json_encode()可以很好地处理对象,但是,gapiReportEntry对象中的所有属性都是私有,而json_encode()只显示 public 属性

这解释了json数组中的所有空对象{}

答案 1 :(得分:1)

在gapi.php中更改PRIVATE by PUBLIC

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

完成!

答案 2 :(得分:0)

json_encode知道如何处理灵长类动物,数字索引数组和关联数组。这不是上述情况。

答案 3 :(得分:-1)

给定的数组根本不是数组,请查看“gapiReportEntry”,这是一个Object。你应该首先遍历所有并转换为原语。