Heim >Backend-Entwicklung >PHP-Tutorial >Wie füge ich mehrere assoziative Arrays und Summenwerte gemeinsamer Schlüssel in PHP zusammen?

Wie füge ich mehrere assoziative Arrays und Summenwerte gemeinsamer Schlüssel in PHP zusammen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 16:08:30940Durchsuche

How to Merge Multiple Associative Arrays and Sum Values of Shared Keys in PHP?

So führen Sie mehrere assoziative Arrays und Summenwerte gemeinsamer Schlüssel zusammen

Die Herausforderung

Wie Sie vielleicht schon bemerkt haben, ist das integrierte array_merge( )-Funktion in PHP überschreibt die Werte gemeinsam genutzter Schlüssel, wenn mehrere Arrays kombiniert werden. Dies kann problematisch sein, wenn Sie Arrays zusammenführen und stattdessen die Werte gemeinsamer Schlüssel summieren müssen.

Eine Lösung

Um dieser Herausforderung zu begegnen, können wir eine benutzerdefinierte Funktion erstellen oder Array-Operationen nutzen, um dies zu erreichen unser gewünschtes Verhalten. Lassen Sie uns einige mögliche Ansätze untersuchen:

Verwenden einer benutzerdefinierten Funktion

<code class="php">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;
}</code>

Diese Funktion akzeptiert eine beliebige Anzahl von Arrays als Argumente und gibt mit der Kombination ein assoziatives Array zurück Schlüssel und summierte Werte.

Fehlerunterdrückung verwenden

<code class="php">$sums = array();
foreach (array_keys($a1 + $a2) as $key) {
    $sums[$key] = @($a1[$key] + $a2[$key]);
}</code>

Diese Technik nutzt den Fehlerunterdrückungsoperator (@), um zuvor in beiden Arrays auf das Vorhandensein von Schlüsseln zu prüfen Durchführen der Addition.

Verwenden von Array-Zuordnungen

<code class="php">$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));</code>

Dieser Ansatz erstellt eine Zuordnung mit array_fill_keys() und verwendet dann array_map(), um die damit verbundenen Werte hinzuzufügen Gemeinsame Schlüssel.

Lösungen kombinieren

<code class="php">$sums = array_fill_keys(array_keys($a1 + $a2), 0);
array_walk($sums, function (&amp;$value, $key, $arrs) { $value = @($arrs[0][$key] + $arrs[1][$key]); }, array($a1, $a2));</code>

Diese Kombination kombiniert die Fehlerunterdrückungstechnik mit array_walk(), um über die Schlüssel zu iterieren und die Addition durchzuführen.

Fazit

Abhängig von Ihren spezifischen Anforderungen können Sie die am besten geeignete Methode zum Zusammenführen mehrerer Arrays und zum Summieren der Werte gemeinsamer Schlüssel auswählen. Unabhängig davon, ob es sich um die Verwendung einer benutzerdefinierten Funktion, Fehlerunterdrückung, Array-Zuordnungen oder einer Kombination davon handelt, bieten diese Lösungen eine präzise und effektive Möglichkeit, das gewünschte Ergebnis zu erzielen.

Das obige ist der detaillierte Inhalt vonWie füge ich mehrere assoziative Arrays und Summenwerte gemeinsamer Schlüssel in PHP zusammen?. 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