1

在 print_r($segments) 之后,我的数组的输出与此类似:

Array
(
    [kind] => analytics#segments
    [username] => account@gmail.com
    [totalResults] => 2334
    [startIndex] => 1
    [itemsPerPage] => 1000
    [items] => Array
    (
        [0] => Array
            (
                [id] => -1
                [kind] => analytics#segment
                [selfLink] => https://www.googleapis.com/analytics/v3/management/segments/gaid::-1
                [segmentId] => gaid::-1
                [name] => All Visits
                [definition] => 
            )
...

        [999] => Array
            (
                [id] => -1
                [kind] => analytics#segment
                [selfLink] => https://www.googleapis.com/analytics/v3/management/segments/gaid::-1
                [segmentId] => gaid::-1
                [name] => All Visits
                [definition] => 
            )
    )
)

这个数组是谷歌分析 API PHP 的输出,它显示的最大值是itemsPerPage参数中提到的1000行,但我确实有超过 1000 行,接近totalResults参数 中提到的2334行。

有人知道如何强制它一次显示所有输出吗?

当我运行这个:

 $nextLink = $results->getNextLink()
            ? $results->getNextLink() : 'none';

print($nextLink);

输出是一个链接https ://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles?start-index=1001&max-results=1000

Accoring to this 文档 I have to use the parameter called 最大结果 to display more results per page, but I have no idea how to do so, no much documentation about it.

知道如何使用max-results参数或链接获取其余结果吗?

4

1 回答 1

3

快速回答https ://developers.google.com/analytics/devguides/reporting/core/v3/coreDevguide#working

查看分页信息,您的数据似乎应该有 agetNextLink()并且getPreviousLink()可能不是数据的一部分并且不会打印在 a 中print_r()

当通过网络访问 API 并且不知道 API 需要返回多少信息时,您不想冒险一次发送大量数据。这可能会导致大量不必要的流量并减慢整个系统的速度。

一种解决方案,分页,是发回一组响应(在这种情况下为 1000 个),如果 API 的用户需要更多,让他们明确地请求下一组。

伪代码:( 对不起,我没有可用的 Google-API 设置来尝试这个)

$finalArray = array();

//Copy $segments into $finalArray;
while(!empty($segments->getNextLink()))
{
    //Use $segments->getNextLink()
    //$segments now contains the next set of data
    //Copy $segments into $finalArray;
}
于 2012-11-06T03:29:05.080 回答