Bagaimana untuk menggabungkan tatasusunan dan menyimpan kunci?
P粉081360775
P粉081360775 2023-10-17 11:01:01
0
2
541

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?

P粉081360775
P粉081360775

membalas semua(2)
P粉593536104

Andaikan kita mempunyai 3 tatasusunan seperti yang ditunjukkan di bawah.

$a = array(0=>['label'=>'Monday','is_open'=>1],1=>['label'=>'Tuesday','is_open'=>0]);

$b = array(0=>['open_time'=>'10:00'],1=>['open_time'=>'12:00']); 

$c = array(0=>['close_time'=>'18:00'],1=>['close_time'=>'22:00']);

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.

$final_arr = array_replace_recursive($a, $b , $c);

Hasilnya adalah seperti berikut.

Array
(
    [0] => Array
        (
            [label] => Monday
            [is_open] => 1
            [open_time] => 10:00
            [close_time] => 18:00
        )

    [1] => Array
        (
            [label] => Tuesday
            [is_open] => 0
            [open_time] => 12:00
            [close_time] => 22:00
        )

)

Semoga penyelesaian di atas sesuai dengan keperluan anda! !

P粉729436537

Anda sedang mencari array_replace():

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('d' => 4, 'e' => 5, 'f' => 6, 'a' => 'new value', '123' => 456);
print_r(array_replace($array1, $array2));

Tersedia sejak PHP 5.3.

Dikemas kini

Anda juga boleh menggunakan kesatuan pengendali tatasusunan; ia berfungsi pada versi lama dan mungkin juga lebih pantas:

print_r($array2 + $array1);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!