Heim >Backend-Entwicklung >PHP-Tutorial >Wie werden Werte gemeinsam genutzter Schlüssel in flachen assoziativen Arrays zusammengeführt und summiert?

Wie werden Werte gemeinsam genutzter Schlüssel in flachen assoziativen Arrays zusammengeführt und summiert?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 19:12:03718Durchsuche

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

Werte in flachen assoziativen Arrays zusammenführen und summieren

Problem:

Sie haben mehrere flache assoziative Arrays und möchten diese zusammenführen und dabei die mit übereinstimmenden Schlüsseln verknüpften Werte addieren, ohne vorhandene Werte zu überschreiben. Die Standardfunktion array_merge() sowie eine einfache Additionsoperation liefern nicht das gewünschte Verhalten.

Lösung:

Um assoziative Arrays zusammenzuführen und die Werte zu summieren Für die Erstellung gemeinsamer Schlüssel können Sie einen der folgenden Ansätze verwenden:

1. Schleife über die kombinierten Schlüssel:

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

Dieser Ansatz durchläuft die Schlüssel der kombinierten Arrays und akkumuliert die Werte für jeden Schlüssel im $sums-Array.

2. Zuordnung verwenden:

<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>

Hier erstellen wir ein Array mit allen eindeutigen Schlüsseln aus den Eingabearrays und verwenden dann array_map(), um eine Funktion zuzuordnen, die die mit jedem Schlüssel in verknüpften Werte summiert Arrays.

3. Hilfsfunktion:

Wenn Sie diesen Vorgang häufig ausführen müssen, können Sie eine Hilfsfunktion erstellen:

<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 und summiert die Werte von Shared Schlüssel in ein neues Array.

Mit einem dieser Ansätze können Sie die Werte gemeinsam genutzter Schlüssel in flachen assoziativen Arrays zusammenführen und summieren, was zum gewünschten Verhalten führt.

Das obige ist der detaillierte Inhalt vonWie werden Werte gemeinsam genutzter Schlüssel in flachen assoziativen Arrays zusammengeführt und summiert?. 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