Суммируйте значения с тем же именем в цикле foreach php - PullRequest
0 голосов
/ 31 октября 2018

Как суммировать то же значение в 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 - это просто функция для извлечения части URL.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Вы можете создать новый массив для группировки всех ваших результатов. Обратите внимание, что вы можете получать уведомления о смещениях, просто сначала проверьте ключ 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.'")';
}

См. рабочий пример здесь с примерами данных.

0 голосов
/ 31 октября 2018

Создайте новый массив и суммируйте значение.

$newArray=array();
Foreach( $myarray as             $key=>$value)
{
   If(!isset($newArray[$key])
  {
     $newArray[$key]=$value;
  }
  Else
  {
     $newArray+=$value;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...