Heim > Artikel > Backend-Entwicklung > Wie summiere ich Werte für gemeinsam genutzte Schlüssel beim Zusammenführen assoziativer Arrays?
Arrays zusammenführen und gemeinsame Schlüsselwerte summieren
Oft besteht die Notwendigkeit, mehrere assoziative Arrays zusammenzuführen und gleichzeitig die mit gemeinsam genutzten Schlüsseln verknüpften Werte zu kombinieren. Standardmäßig werden beim Zusammenführen von Arrays widersprüchliche Werte überschrieben, wie im bereitgestellten Beispiel zu sehen ist. Um dieses Problem anzugehen, stellen wir eine Reihe von Ansätzen vor, die effektiv Werte für gemeinsam genutzte Schlüssel hinzufügen und gleichzeitig eindeutige Schlüssel beibehalten.
Verwendung von Array-Zwischenprodukten:
Ein Ansatz besteht darin, die zu berechnen Summe der Werte manuell mithilfe von Array-Zwischenprodukten. Dies beinhaltet das Durchlaufen der Schlüssel des zusammengeführten Arrays und das Summieren der Werte für jeden Schlüssel über die Eingabearrays hinweg.
$sums = array(); foreach (array_keys($a1 + $a2) as $key) { $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0) + (isset($a2[$key]) ? $a2[$key] : 0); }
Zuordnung und Reduktion:
Eine andere Methode beinhaltet Erstellen von Zwischenarrays mit Nullwerten für jeden eindeutigen Schlüssel. Diese werden dann mit den ursprünglichen Arrays zusammengeführt und zugeordnet, um die Summen zu berechnen.
$keys = array_fill_keys(array_keys($a1 + $a2), 0); $sums = array_map(function ($a1, $a2) { return $a1 + $a2; }, array_merge($keys, $a1), array_merge($keys, $a2));
Array-Walking:
Ähnlich können Sie Array-Walking verwenden, um die Summen zu berechnen für gemeinsame Schlüssel.
$sums = array_fill_keys(array_keys($a1 + $a2), 0); array_walk($sums, function (&$value, $key, $arrs) { $value = @($arrs[0][$key] + $arrs[1][$key]); }, array($a1, $a2));
Wiederverwendbare Funktion mit dynamischen Parametern:
Schließlich können Sie eine wiederverwendbare Funktion erstellen, die eine unbegrenzte Anzahl von Arrays akzeptiert und die Summe berechnet von Werten für gemeinsam genutzte Schlüssel.
function array_sum_identical_keys() { $arrays = func_get_args(); $keys = array_keys(array_reduce($arrays, function ($keys, $arr) { return $keys + $arr; }, array())); $sums = array(); foreach ($keys as $key) { $sums[$key] = array_reduce($arrays, function ($sum, $arr) use ($key) { return $sum + @$arr[$key]; }); } return $sums; }
Diese Lösungen bieten effiziente Möglichkeiten, mehrere assoziative Arrays zusammenzuführen und die Summe der Werte für gemeinsam genutzte Schlüssel zu berechnen, was Flexibilität und Wiederverwendbarkeit des Codes für verschiedene Szenarien bietet.
Das obige ist der detaillierte Inhalt vonWie summiere ich Werte für gemeinsam genutzte Schlüssel beim Zusammenführen assoziativer Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!