Saya ingin menukar nilai dalam satu tatasusunan berbilang dimensi jika kunci yang sepadan ditemui dalam tatasusunan bersekutu rata yang lain.
Saya mempunyai dua tatasusunan ini:
$full = [ 'Cars' => [ 'Volvo' => 0, 'Mercedes' => 0, 'BMW' => 0, 'Audi' => 0 ], 'Motorcycle' => [ 'Ducati' => 0, 'Honda' => 0, 'Suzuki' => 0, 'KTM' => 0 ] ]; $semi = [ 'Volvo' => 1, 'Audi' => 1 ];
Saya mahu tatasusunan kelihatan seperti ini:
Array ( [Cars] => Array ( [Volvo] => 1 [Mercedes] => 0 [BMW] => 0 [Audi] => 1 ) [Motorcycle] => Array ( [Ducati] => 0 [Honda] => 0 [Suzuki] => 0 [KTM] => 0 ) )
Saya mendapat tatasusunan $semi daripada medan input dan ingin menggabungkannya menjadi $full untuk menyimpannya ke pangkalan data saya.
Saya telah mencuba array_replace()
seperti:
$replaced = array_replace($full, $semi);
Anda hanya perlu mengakses "leafnodes" dan sangat mudah untuk mengulang dan mengubah suai keseluruhan tatasusunan menggunakan
array_walk_recursive()
.Sintaks "fungsi anak panah" moden membenarkan akses kepada separuh tatasusunan tanpa menulis
use()
.Kaedah ini tidak akan membuat panggilan fungsi berulang. Ia secara bersyarat menambah nilai yang terdapat dalam tatasusunan separuh dengan rujukan (
&$v
) 修改$v
,使用“加法赋值”组合运算符 (+=
) 以及空合并operator (??
) dalam tatasusunan penuh.Kod: (Demo)
Tidak menggunakan
array_walk_recursive()
memerlukan penggunaan gelung bersarang untuk menambah pengeluar yang layak.Kod: (Demo)
Anda harus menggelung
$semi
数组并检查它是否存在于$full
melalui salah satu tatasusunan dan menambahnya: