/ / Як підсумувати та підрахувати конкретні ключі у багатовимірному масиві [дублікат] - php, масиви

Як підсумувати і підраховувати певні ключі в багатовимірному масиві [duplicate] - php, масиви

У мене є така колекція, яка містить масиви нижче:

  #items: array:2 [▼
0 => array:13 [▼

"label" => "00000000-N/A"
"views" => 980
"clicks" => 444
"form_submissions_perc" => "100.0"

]
1 => array:13 [▼

"label" => "1111-N/A"
"views" => 323
"clicks" => 1009
"form_submissions_perc" => "100.0"

]
]

Я намагаюся підсумувати кліки та середні перегляди, але під час спроби я отримую неправильні дані:

   $sum = 0;

foreach ($data as $k => $subArray) {

foreach ($subArray as $id => $value) {

$sum += $subArray["views"];
}

}

dd($sum);

Це була моя спроба підсумувати, але не отримала правильних результатів

Бажаний вихід

   array:2 [

"views"=> 1303,
"clicks"=> 1451

]

Відповіді:

6 за відповідь № 1

Використовуйте $sum як масив і отримати правильне значення багатомасиву:

$sum = array(
"clicks" => 0,
"views" => 0
);

foreach ($data as $id => $value) {
$sum["clicks"] += $value["clicks"];
$sum["views"] += $value["views"];
}

dd($sum);

1 для відповіді № 2

Ви можете використовувати array_reduce замість цього

$data = array_reduce($array, function ($old, $new) {
return [
"view" => $old["view"] + $new["view"],
"clicks" => $old["clicks"] + $new["clicks"]
];
}, ["view" => 0, "clicks" => 0]);

print "<pre>";
print_r($data);

1 для відповіді № 3
   foreach ($data as $k => $subArray) {
$valueSum[] = $subArray["views"];
$clickSum[] = $subArray["clicks"];
}
echo array_sum($valueSum);
echo array_sum($clickSum);

це також чистий і простий спосіб.


1 для відповіді № 4
$data = [
[
"label"                 => "00000000-N/A",
"views"                 => 980,
"clicks"                => 444,
"form_submissions_perc" => "100.0"
],
[
"label"                 => "1111-N/A",
"views"                 => 323,
"clicks"                => 1009,
"form_submissions_perc" => "100.0"
]
];

$result["views"]  = array_sum( array_column( $data, "views" ) );
$result["clicks"] = array_sum( array_column( $data, "clicks" ) );

dd( $result );

Це найпростіший спосіб зробити свою роботу.

Результат:

Array ( [views] => 1303 [clicks] => 1453 )