Tatasusunan PHP: Menggabung Tatasusunan dengan Kekunci Padanan
Dalam PHP, terdapat keadaan apabila kita perlu menggabungkan berbilang tatasusunan, memastikan item itu dengan kunci yang sama digabungkan. Pertimbangkan senario berikut:
Masalah:
Kami mempunyai dua tatasusunan dengan kekunci yang sepadan dan ingin menggabungkannya, seperti:
<code class="php">$array1 = [ ['Camera1' => '192.168.101.71'], ['Camera2' => '192.168.101.72'], ['Camera3' => '192.168.101.74'] ]; $array2 = [ ['Camera1' => 'VT'], ['Camera2' => 'UB'], ['Camera3' => 'FX'] ];</code>
Penyelesaian:
Untuk menggabungkan tatasusunan ini sambil mengekalkan perhubungan nilai kunci, kita boleh menggunakan array_map bersama-sama dengan array_keys untuk memanipulasi dan menggabungkannya:
<code class="php">$results = array(); array_map(function($a, $b) use (&$results) { $key1 = current(array_keys($a)); $a[$key1] = ['ip' => $a[$key1]]; $key2 = current(array_keys($b)); $b[$key2] = ['name' => $b[$key2]]; $results = array_merge_recursive($a, $b); }, $array1, $array2);</code>
Ini penyelesaian berfungsi dengan menggelung setiap elemen dalam kedua-dua tatasusunan, mengekstrak kunci yang sepadan dan menamakan semula nilai untuk memastikan ia boleh digabungkan menggunakan array_merge_recursive. Hasilnya ialah tatasusunan di mana setiap kunci mempunyai hasil gabungan, seperti yang ditunjukkan di bawah:
<code class="php">array ( 'Camera1' => array ( 'ip' => '192.168.101.71', 'name' => 'VT' ), 'Camera2' => array ( 'ip' => '192.168.101.72', 'name' => 'UB' ), 'Camera3' => array ( 'ip' => '192.168.101.74', 'name' => 'FX' ) )</code>
Atas ialah kandungan terperinci Bagaimana untuk menggabungkan tatasusunan PHP dengan kunci yang sepadan dan menggabungkan nilainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!