首頁 >後端開發 >php教程 >如何在 PHP 中合併多個關聯數組和共享鍵的求和值?

如何在 PHP 中合併多個關聯數組和共享鍵的求和值?

Linda Hamilton
Linda Hamilton原創
2024-11-03 16:08:30940瀏覽

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

如何合併多個關聯數組以及共享鍵的求和值

挑戰

您可能遇到過,內建的array_merge( PHP 中的) 函數在組合多個陣列時會覆蓋共享鍵的值。當您需要合併數組並對共享鍵的值求和時,這可能會出現問題。

解決方案

為了解決這個挑戰,我們可以創建一個自訂函數或利用數組操作來實現我們期望的行為。讓我們探索幾種可能的方法:

使用自訂函數

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

此函數接受任意數量的陣列作為參數,並傳回一個關聯數組與組合鍵和求和值。

使用錯誤抑制

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

此技術利用錯誤抑制運算子(@) 來檢查之前兩個陣列中是否存在鍵

使用陣列映射

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

此方法使用array_fill_keys() 建立映射,然後使用array_map() 新增與共用鍵。

組合解決方案

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

此組合將錯誤抑制技術與 array_walk() 結合,以迭代鍵並執行加法。

結論

根據您的特定需求,您可以選擇最合適的方法來合併多個陣列並對共享鍵的值求和。無論是使用自訂函數、錯誤抑制、陣列映射還是它們的組合,這些解決方案都提供了一種簡潔有效的方法來實現所需的結果。

以上是如何在 PHP 中合併多個關聯數組和共享鍵的求和值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn