共有キーの合計値を使用して連想配列をマージする
共有キーの値を組み合わせながら複数の連想配列をマージするのは、一般的ではありますが、困難なタスクとなる場合があります。この記事では、この問題に対処するためのいくつかの解決策を紹介します。
合計による配列のマージ
目的は、2 つ以上のフラットな連想配列 (文字列キーと非文字列キーを持つ配列) をマージすることです。 -配列値) を計算し、同一のキーに関連付けられた値を合計します。これは、重複キーの値を置き換える 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") は合計されずに置き換えられます。
カスタム ソリューション
望ましい結果を達成するには、カスタム関数を利用できます。これは、結合された配列のキーを反復処理し、共有キーの値を合計します。そのような実装の 1 つを次に示します。
<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 中国語 Web サイトの他の関連記事を参照してください。