Bagaimana Menjumlahkan Nilai untuk Kunci Dikongsi Apabila Menggabungkan Tatasusunan Bersekutu?

Barbara Streisand
Lepaskan: 2024-11-03 14:16:30
asal
167 orang telah melayarinya

How to Sum Values for Shared Keys When Merging Associative Arrays?

Menggabungkan Tatasusunan dan Menjumlahkan Nilai Kunci Dikongsi

Keperluan sering timbul untuk menggabungkan berbilang tatasusunan bersekutu sambil menggabungkan nilai yang dikaitkan dengan kunci kongsi. Secara lalai, penggabungan tatasusunan menimpa nilai yang bercanggah, seperti yang dilihat dalam contoh yang disediakan. Untuk menangani perkara ini, kami membentangkan pelbagai pendekatan yang berkesan menambah nilai untuk kunci dikongsi sambil mengekalkan kunci unik.

Menggunakan Perantaraan Tatasusunan:

Satu pendekatan ialah mengira jumlah nilai secara manual menggunakan perantaraan tatasusunan. Ini melibatkan lelaran melalui kekunci tatasusunan yang digabungkan dan menjumlahkan nilai untuk setiap kunci merentasi tatasusunan input.

$sums = array();
foreach (array_keys($a1 + $a2) as $key) {
    $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0) + (isset($a2[$key]) ? $a2[$key] : 0);
}
Salin selepas log masuk

Pemetaan dan Pengurangan:

Kaedah lain melibatkan mencipta tatasusunan perantaraan dengan nilai sifar untuk setiap kunci unik. Ini kemudiannya digabungkan dengan tatasusunan asal dan dipetakan untuk mengira jumlah.

$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));
Salin selepas log masuk

Jalan Susunan:

Begitu juga, anda boleh menggunakan berjalan tatasusunan untuk mengira jumlah untuk kunci kongsi.

$sums = array_fill_keys(array_keys($a1 + $a2), 0);
array_walk($sums, function (&$value, $key, $arrs) { $value = @($arrs[0][$key] + $arrs[1][$key]); }, array($a1, $a2));
Salin selepas log masuk

Fungsi Boleh Guna Semula dengan Parameter Dinamik:

Akhir sekali, anda boleh mencipta fungsi boleh guna semula yang menerima bilangan tatasusunan yang tidak terhad dan mengira jumlah daripada nilai untuk kunci kongsi.

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;
}
Salin selepas log masuk

Penyelesaian ini menyediakan cara yang cekap untuk menggabungkan berbilang tatasusunan bersekutu dan mengira jumlah nilai untuk kunci dikongsi, menawarkan kefleksibelan dan kebolehgunaan semula kod untuk pelbagai senario.

Atas ialah kandungan terperinci Bagaimana Menjumlahkan Nilai untuk Kunci Dikongsi Apabila Menggabungkan Tatasusunan Bersekutu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!