Saya mempunyai dua tatasusunan:
$array1 = array('a' => 1, 'b' => 2, 'c' => 3); $array2 = array('d' => 4, 'e' => 5, 'f' => 6, 'a' => 'new value', '123' => 456);
Saya mahu menggabungkannya dan mengekalkan kunci serta pesanan daripada mengindeks semula! !
Bagaimana ia menjadi seperti ini?
Array ( [a] => new value [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [123] => 456 )
Saya mencuba array_merge() tetapi ia tidak mengekalkan kunci:
print_r(array_merge($array1, $array2)); Array ( [a] => 'new value' [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [0] => 456 )
Saya cuba menggunakan pengendali kesatuan tetapi ia tidak menimpa elemen:
print_r($array1 + $array2); Array ( [a] => 1 <-- not overwriting [b] => 2 [c] => 3 [d] => 4 [e] => 5 [f] => 6 [123] => 456 )
Saya cuba menukar tempat, tetapi ia dalam susunan yang salah, bukan seperti yang saya perlukan:
print_r($array2 + $array1); Array ( [d] => 4 [e] => 5 [f] => 6 [a] => new value [123] => 456 [b] => 2 [c] => 3 )
Saya tidak mahu menggunakan gelung, adakah cara untuk mendapatkan prestasi tinggi?
Andaikan kita mempunyai 3 tatasusunan seperti yang ditunjukkan di bawah.
Sekarang jika anda ingin menggabungkan semua tatasusunan ini dan mahu tatasusunan terakhir mengandungi semua data tatasusunan di bawah kekunci 0 dalam 0 dan 1 dalam 1 dan seterusnya.
Maka anda perlu menggunakan fungsi array_replace_recursive PHP seperti berikut.
Hasilnya adalah seperti berikut.
Semoga penyelesaian di atas sesuai dengan keperluan anda! !
Anda sedang mencari
array_replace()
:Tersedia sejak PHP 5.3.
Dikemas kini
Anda juga boleh menggunakan kesatuan pengendali tatasusunan; ia berfungsi pada versi lama dan mungkin juga lebih pantas: