我正在构建一个Google Analytics仪表板并已经完成,但是我完全被这件真正让我挂在的事情上。
当我在 GA Core Reporting API 中查询数据集时,我成功获取并能够显示结果,并且一切正常,除了我无法查询 JSON 对象的"启动索引"。也就是说,它将显示的第一行(默认值 = 1,但 GA 一次只返回 10k 行,因此,如果您有一个包含>10k 行的数据集,这变得至关重要!
要尝试获取此整数,我使用
$start = $results->query.start-index;
作为检查以确保我没有疯,"max-results"就在 JSON 对象中的"start-index"旁边,这工作正常:
$max = $results->totalResults;
这是 GA JSON 对象(每 https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startIndex)
{
"kind": "analytics#gaData",
"id": string,
"selfLink": string,
"containsSampledData": boolean,
"query": {
"start-date": string,
"end-date": string,
"ids": string,
"dimensions": [
string
],
"metrics": [
string
],
"sort": [
string
],
"filters": string,
"segment": string,
"start-index": integer,
"max-results": integer
},
"itemsPerPage": integer,
"totalResults": integer,
"previousLink": string,
"nextLink": string,
"profileInfo": {
"profileId": string,
"accountId": string,
"webPropertyId": string,
"internalWebPropertyId": string,
"profileName": string,
"tableId": string
},
"columnHeaders": [
{
"name": string,
"columnType": string,
"dataType": string
}
],
"rows": [
[
string
]
],
"totalsForAllResults": [
{
metricName: string,
...
}
]
}
帮助!提前致谢
PHP 中的属性名称既不能包含 .
也不能包含 -
。您的代码被解释为数组的字符串串联,其结果是两个字符串的数学减法(如果您从该描述中看不到我的意思,甚至不要开始尝试理解这一点)。
PHP在这一点上实际上是一个完全的后端痛苦,你必须通过将TRUE
传递给json_decode()
的第二个参数来强制它将解码的数据转换为关联数组而不是对象。然后,您可以通过数组键访问数据:
例如
$results = json_decode($jsonString, TRUE);
$start = $results['query']['start-date'];
所以我仍然不完全确定为什么这样做,但我使用以下函数成功地拉出了正确的起始索引号:
function getStartIndex(&$results) {
$query = $results->getQuery();
foreach ($query as $paramName => $value) {
if($paramName == "start-index")
$startIndex = $value;
}
return $startIndex;
}
这实质上是遍历整个$query关联数组,直到找到参数与"start-index"匹配的数组,然后返回值。