foreach循环php

时间:2018-10-30 22:35:00

标签: php foreach

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

2 个答案:

答案 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;
  }