0

如果我有这样的输出,如何在 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只是提取部分网址的功能。

4

2 回答 2

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.'")';
}

在此处查看带有示例数据的工作示例。

于 2018-10-30T23:29:27.973 回答
0

创建一个新数组并对值求和。

$newArray=array();
Foreach( $myarray as             $key=>$value)
{
   If(!isset($newArray[$key])
  {
     $newArray[$key]=$value;
  }
  Else
  {
     $newArray+=$value;
  }
于 2018-10-30T23:15:31.490 回答