将维度和指标数据添加到数组 - php

使用以下代码(来自Analytics quickstart),我试图将维度和指标数据添加到$responseArray数组中,以便稍后将其作为JSON返回:

public function formatDailySessionsReport( $reports ) {
    $responseArray = array();
    for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {
        $report = $reports[ $reportIndex ];
        $header = $report->getColumnHeader();
        $dimensionHeaders = $header->getDimensions();
        $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
        $rows = $report->getData()->getRows();

        for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
            $row = $rows[ $rowIndex ];
            $dimensions = $row->getDimensions();
            $metrics = $row->getMetrics();
            for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
                //Adding dimension data here
                $responseArray[$rowIndex][$i][$dimensionHeaders[$i]] = $dimensions[$i];
                //print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
            }

            for ($j = 0; $j < count($metrics); $j++) {
                $values = $metrics[$j]->getValues();
                for ($k = 0; $k < count($values); $k++) {
                    $entry = $metricHeaders[$k];
                    //Adding metric data here
                    $responseArray[$j][$k][$entry->getName()] = $values[$k];
                    //print($entry->getName() . ": " . $values[$k] . "\n");
                }
            }
        }
    } 
    return $responseArray;      
}

使用注释掉的print语句时,数据似乎可以正确打印:

ga:date: 20170426
sessions: 2711
ga:date: 20170427
sessions: 2425
ga:date: 20170428
sessions: 2620

但是,当尝试将其添加到数组时,数据的格式似乎不正确(会话仅包含一次):

"response": [
    [
      {
        "ga:date": "20170426",
        "sessions": "656"
      }
    ],
    [
      {
        "ga:date": "20170427"
      }
    ],
    [
      {
        "ga:date": "20170428"
      }
    ],
    ...
]

我正在使用以下内容来创建JSON响应:

$response = $this->formatDailySessionsReport( $reportData );
// Return response
echo json_encode( array( 'response' => $response ) );

我期待更多这样的事情:

"response" [
  {
    "ga:date": "20170426",
    "sessions": "656"
  },
  {
    "ga:date": "20170427",
    "sessions": "1234"
  },
  {
    "ga:date": "20170428",
    "sessions": "1234"
  }  
]

连同日期和会话一起,如何构造$responseArray以获得期望的格式?

参考方案

您可以将此代码与array_map()一起使用,

$responseArray['response'] = array_map(function($v){
  return $v[0];
}, $responseArray['response']);

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

内置函数的PHP源代码 - php

PHP是用C编写的吗?在哪里可以找到PHP源代码,而无需下载所有源代码? 参考方案 PHP函数是用C编写的-您可以在lxr.php.net中找到可浏览的源代码。例如:http://lxr.php.net/opengrok/xref/PHP_5_3/ext/standard/array.c#1242PS:通常,只需在搜索中键入函数名称即可找到函数定义。使用诸如…

PHP:如何从JSON数组获取属性? - php

我有以下JSON数组:使用PHP,如何从上面的JSON数组中获取geometery->location->lat&lng值?例如(伪代码):<?php $json = { "status": "OK", "results": [ { "types": [ �…

PHP:如何知道链接是否是有效的YouTube链接? - php

这是例子。www.youtube.com, http://www.youtube.com/, http://www.youtube.com/watch?v=YoB8t0B4jx4 我不在乎它是否具有视频或仅YouTube网址,而只有有效网址。我想做的是,当我知道它是有效的YouTube网址时,我将检查它是否具有视频ID。如果它具有ID,我将为视频添加ifra…

标头和包含项之间有什么区别,应在何处使用 - php

我对两个词感到困惑header ("Location:homepage_php");include("homepage.php");我猜想标题是在检查密码过程后使用的,关于include,您可以在任何地方使用它。但是我不确定它们之间的实际区别是什么以及应该使用这两个中的哪个位置。 参考方案 标头将用户转发到新页面,因此…