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); }
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));
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));
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; }
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!