將關聯數組與共享鍵的求和值合併
合併多個關聯數組同時組合共享鍵的值可能是一項常見但具有挑戰性的任務。本文提出了解決此問題的幾種解決方案。
使用求和進行數組合併
目標是合併兩個或多個平面關聯數組(具有字串鍵和非字串鍵的數組) -數組值)並對與相同鍵關聯的值求和。這與 array_merge() 函數的預設行為不同,該函數會取代重複鍵的值。
範例
考慮以下範例:
<code class="php">$a1 = array("a" => 2, "b" => 0, "c" => 5); $a2 = array("a" => 3, "b" => 9, "c" => 7, "d" => 10);</code>
如果我們使用array_merge() 來組合這些陣列,結果將是:
<code class="php">$a3 = array_merge($a1, $a2); print_r($a3); </code>
輸出:
Array ( [a] => 3 [b] => 9 [c] => 7 [d] => 10 )
如您所見,共享鍵的值( "a", "b", "c") 不是求和而是替換。
自訂解決方案
為了達到所需的結果,我們可以使用自訂函數迭代組合數組的鍵並對共享鍵的值求和。這是一個這樣的實作:
<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>
輸出:
<code class="php">Array ( [a] => 5 [b] => 9 [c] => 12 [d] => 10 )</code>
此函數允許我們使用共享鍵合併多個數組,並提供這些鍵的總和值。
以上是如何將關聯數組與共享鍵的求和值合併?的詳細內容。更多資訊請關注PHP中文網其他相關文章!