Ich habe die folgende Sammlung, die die Arrays unten enthält:
#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"
]
]
Ich versuche, Klicks und durchschnittliche Aufrufe zusammenzufassen, aber bei meinem Versuch erhalte ich die falschen Daten:
$sum = 0;
foreach ($data as $k => $subArray) {
foreach ($subArray as $id => $value) {
$sum += $subArray["views"];
}
}
dd($sum);
Dies war mein Versuch, zu summieren, aber nicht die richtigen Ergebnisse zu erzielen
Gewünschte Ausgabe
array:2 [
"views"=> 1303,
"clicks"=> 1451
]
Antworten:
6 für die Antwort № 1Benutzen $sum
als Array und erhalte den korrekten Wert von Multiarray:
$sum = array(
"clicks" => 0,
"views" => 0
);
foreach ($data as $id => $value) {
$sum["clicks"] += $value["clicks"];
$sum["views"] += $value["views"];
}
dd($sum);
1 für die Antwort № 2
Sie können verwenden array_reduce stattdessen
$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 für die Antwort № 3
foreach ($data as $k => $subArray) {
$valueSum[] = $subArray["views"];
$clickSum[] = $subArray["clicks"];
}
echo array_sum($valueSum);
echo array_sum($clickSum);
Dies ist auch eine saubere und einfache Möglichkeit.
1 für die Antwort № 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 );
Dies ist der einfachste Weg, um Ihre Arbeit zu erledigen.
Ergebnis:
Array ( [views] => 1303 [clicks] => 1453 )