如果我有这样的输出,如何在Forech中求和相同的值
Array
(
[0] => 200,2,
[1] => 200,3,
[2] => 300,5,
)
输出应该像
'200' => 5,
'300' => 5,
所以组名200
和SUM值,所以结果是2 + 3
$ga->requestReportData(
ga_profile_id,
array('date','pagePath'),
array('pageviews'),
'-pageviews',
'ga:pagePathLevel1==/post/ && ga:pagePathLevel2=~^\/[0-9]+\/$',
$date,
$date,
1);
foreach ($ga->getResults() as $result) {
$pageviews = $result->getPageviews();
$pagepath = $result->getPagePath();
if(is_numeric(get_part_url($pagepath))){
print 'INSERT INTO stats (views,content_id) VALUES ("'.$pageviews.'","'.get_part_url($pagepath).'")';
}
}
get_part_url
只是提取部分网址的功能。
答案 0 :(得分:1)
您可以创建一个新数组,将所有结果分组。请注意,您可能会收到有关偏移的通知,只需先检查键isset()
即可停止偏移,或使用error_reporting(E_ERROR);
不显示警告。
$groupedResults = array();
foreach ($ga->getResults() as $result) {
$pageviews = $result->getPageviews();
$pagepath = get_part_url($result->getPagePath());
if(is_numeric($pagepath)) $groupedResults[$pagepath] += $pageviews;
}
然后您可以遍历这些内容并运行数据库查询。
foreach ($groupedResults as $k => $v) {
print 'INSERT INTO stats (views,content_id) VALUES ("'.$v.'","'.$k.'")';
}
查看带有示例数据的working example here。
答案 1 :(得分:0)
创建一个新数组并求和。
$newArray=array();
Foreach( $myarray as $key=>$value)
{
If(!isset($newArray[$key])
{
$newArray[$key]=$value;
}
Else
{
$newArray+=$value;
}