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

Patricia Arquette
リリース: 2024-11-03 19:12:03
オリジナル
644 人が閲覧しました

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

フラット連想配列の値のマージと合計

問題:

複数のフラットがあります連想配列を結合し、既存の値を上書きせずに、一致するキーに関連付けられた値を加算したいと考えています。標準の array_merge() 関数や単純な加算演算では、望ましい動作が得られません。

解決策:

連想配列を結合して値を合計するには共有キーの場合は、次のいずれかの方法を使用できます。

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>
ログイン後にコピー

このアプローチは、結合された配列のキーをループし、各キーの値を $sums 配列に蓄積します。

2.マッピングの使用:

<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_map() を使用して、各キーに関連付けられた値を合計する関数をマップします。配列。

3.ヘルパー関数:

この操作を頻繁に実行する必要がある場合は、ヘルパー関数を作成できます:

<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>
ログイン後にコピー

この関数は任意の数の配列を受け入れ、共有された配列の値を合計します。キーを新しい配列に追加します。

これらのアプローチのいずれかを使用すると、フラット連想配列内の共有キーの値をマージして合計し、目的の動作を実現できます。

以上がフラット連想配列の共有キーの値をマージして合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!