Arrays zusammenführen und gemeinsame Schlüsselwerte summieren
Es besteht häufig die Notwendigkeit, mehrere assoziative Arrays zusammenzuführen und gleichzeitig die mit gemeinsam genutzten Schlüsseln verbundenen 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.
Verwenden von Array-Zwischenprodukten:
Ein Ansatz besteht darin, die zu berechnen Summe der Werte manuell mithilfe von Array-Zwischenprodukten. Dazu gehört 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 besteht darin, Zwischenarrays mit Nullwerten für jeden eindeutigen Schlüssel zu erstellen. 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:
In ähnlicher Weise können Sie Array-Walking verwenden, um die Summen für Shared zu berechnen 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 akzeptiert Anzahl der Arrays und berechnet die Summe der Werte für gemeinsame 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, und bieten Flexibilität und Wiederverwendbarkeit des Codes für verschiedene Szenarien.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3