Seperti yang mungkin anda temui, array_merge( terbina dalam ) dalam PHP menimpa nilai kunci yang dikongsi apabila menggabungkan berbilang tatasusunan. Ini boleh menjadi masalah apabila anda perlu menggabungkan tatasusunan dan menjumlahkan nilai kunci kongsi sebaliknya.
Untuk menangani cabaran ini, kami boleh mencipta fungsi tersuai atau memanfaatkan operasi tatasusunan untuk mencapai tingkah laku yang kita inginkan. Mari kita terokai beberapa pendekatan yang mungkin:
Menggunakan Fungsi Tersuai
<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 bilangan tatasusunan sembarangan sebagai argumen dan mengembalikan tatasusunan bersekutu dengan gabungan kunci dan nilai hasil penjumlahan.
Menggunakan Penindasan Ralat
<code class="php">$sums = array(); foreach (array_keys($a1 + $a2) as $key) { $sums[$key] = @($a1[$key] + $a2[$key]); }</code>
Teknik ini memanfaatkan pengendali penindasan ralat (@) untuk menyemak kewujudan kunci dalam kedua-dua tatasusunan sebelum melakukan penambahan.
Menggunakan Pemetaan Tatasusunan
<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>
Pendekatan ini mencipta pemetaan menggunakan array_fill_keys() dan kemudian menggunakan array_map() untuk menambah nilai yang dikaitkan dengan kunci yang dikongsi.
Menggabungkan Penyelesaian
<code class="php">$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));</code>
Gabungan ini menggabungkan teknik penindasan ralat dengan array_walk() untuk mengulangi kekunci dan melakukan penambahan.
Kesimpulan
Bergantung pada keperluan khusus anda, anda boleh memilih kaedah yang paling sesuai untuk menggabungkan berbilang tatasusunan dan menjumlahkan nilai kunci kongsi. Sama ada menggunakan fungsi tersuai, penindasan ralat, pemetaan tatasusunan atau gabungannya, penyelesaian ini menyediakan cara yang ringkas dan berkesan untuk mencapai hasil yang diinginkan.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Tatasusunan Bersekutu dan Jumlah Nilai Kunci Dikongsi dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!