Gabung dan Jumlahkan Nilai dalam Tatasusunan Bersekutu Rata
Masalah:
Anda mempunyai berbilang flat tatasusunan bersekutu dan ingin menggabungkannya, menambah bersama nilai yang dikaitkan dengan kekunci padanan tanpa menimpa nilai sedia ada. Fungsi array_merge() standard, serta operasi penambahan yang mudah, tidak memberikan kelakuan yang diingini.
Penyelesaian:
Untuk menggabungkan tatasusunan bersekutu dan menjumlahkan nilai daripada kunci yang dikongsi, anda boleh menggunakan salah satu daripada pendekatan berikut:
1. Gelung pada Kekunci Gabungan:
<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>
Pendekatan ini melingkari kekunci tatasusunan gabungan dan mengumpul nilai untuk setiap kunci ke dalam tatasusunan $sums.
2. Gunakan Pemetaan:
<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>
Di sini, kami mencipta tatasusunan dengan semua kunci unik daripada tatasusunan input dan kemudian menggunakan tatasusunan_map() untuk memetakan fungsi yang menjumlahkan nilai yang dikaitkan dengan setiap kunci dalam tatasusunan.
3. Fungsi Pembantu:
Jika anda kerap perlu melakukan operasi ini, anda boleh mencipta fungsi pembantu:
<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>
Fungsi ini menerima sebarang bilangan tatasusunan dan menjumlahkan nilai perkongsian kunci ke dalam tatasusunan baharu.
Dengan menggunakan salah satu pendekatan ini, anda boleh menggabungkan dan menjumlahkan nilai kunci yang dikongsi dalam tatasusunan bersekutu rata, menghasilkan gelagat yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan dan Menjumlahkan Nilai Kunci Dikongsi dalam Tatasusunan Bersekutu Rata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!