ホームページ  >  記事  >  バックエンド開発  >  連想配列を共有キーの合計値とマージするにはどうすればよいですか?

連想配列を共有キーの合計値とマージするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 12:14:29513ブラウズ

How to Merge Associative Arrays with Summed Values for Shared Keys?

共有キーの合計値を使用して連想配列をマージする

共有キーの値を組み合わせながら複数の連想配列をマージするのは、一般的ではありますが、困難なタスクとなる場合があります。この記事では、この問題に対処するためのいくつかの解決策を紹介します。

合計による配列のマージ

目的は、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。