Heim >Backend-Entwicklung >PHP-Tutorial >Wie berechnet man Spaltensummen in unregelmäßigen mehrdimensionalen Arrays effizient?

Wie berechnet man Spaltensummen in unregelmäßigen mehrdimensionalen Arrays effizient?

Susan Sarandon
Susan SarandonOriginal
2024-12-24 14:45:14663Durchsuche

How to Efficiently Calculate Column Totals in Irregular Multi-Dimensional Arrays?

So berechnen Sie Spaltensummen in einem mehrdimensionalen Array

Stellen Sie sich ein mehrdimensionales Array vor, in dem Elemente in Zeilen und Spalten angeordnet sind. Die Schlüsselsätze können sich jedoch dynamisch ändern. Die Aufgabe besteht darin, die Summe der Werte innerhalb jeder Spalte zu berechnen, unabhängig von Schlüsselvariationen.

Array_Walk_Recursive-Methode

Für eine allgemeine Lösung, bei der innere Arrays eindeutige Schlüssel haben können, verwenden Sie array_walk_recursive():

$final = array();

array_walk_recursive($input, function($item, $key) use (&$final){
    $final[$key] = isset($final[$key]) ?  $item + $final[$key] : $item;
});

Array_Column Methode

Wenn bestimmte Schlüsselwerte summiert werden müssen, kann array_column() verwendet werden:

array_sum(array_column($input, 'gozhi')); // Sums the 'gozhi' column

Für einheitliche innere Arrays

Wenn alle inneren Arrays die gleichen Schlüssel haben, erhalten Sie die anfängliche Schlüsselstruktur:

$final = array_shift($input);

foreach ($final as $key => &$value){
   $value += array_sum(array_column($input, $key));
}    

unset($value);

Allgemeiner Fall mit Array_Column

Eindeutige Schlüssel extrahieren und Spaltensummen durchführen:

$final = array();

foreach($input as $value)
    $final = array_merge($final, $value);

foreach($final as $key => &$value)
    $value = array_sum(array_column($input, $key));

unset($value);

Das obige ist der detaillierte Inhalt vonWie berechnet man Spaltensummen in unregelmäßigen mehrdimensionalen Arrays effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn