Mencari Perbezaan Antara Lajur Tatasusunan Bersekutu
Anda mempunyai dua tatasusunan dengan baris data bersekutu dan anda ingin menapis tatasusunan kedua berdasarkan nilai lajur tertentu dalam tatasusunan pertama. Menggunakan array_diff() tidak akan mencukupi untuk ini kerana ia membandingkan keseluruhan baris, bukan hanya lajur yang diingini.
Untuk menangani ini, anda boleh memanfaatkan fungsi array_udiff(), yang membolehkan anda menentukan fungsi perbandingan tersuai . Fungsi ini harus membandingkan hanya nilai lajur yang diingini, dalam kes ini, kekunci 'ITEM'.
Begini cara untuk melaksanakannya:
function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; } $arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');
Ini mentakrifkan fungsi perbandingan tersuai udiffCompare yang menolak nilai 'ITEM' bagi dua baris yang dibandingkan. Hasil penolakan ini menentukan sama ada baris adalah sama, berbeza atau yang mana satu lebih besar.
Dengan menghantar udiffCompare sebagai argumen ketiga kepada array_udiff(), anda pada asasnya memberitahu fungsi untuk menggunakan perbandingan tersuai ini berfungsi untuk menentukan elemen mana dalam $arr2 berbeza daripada elemen dalam $arr1 berdasarkan lajur 'ITEM'.
Output kod ini akan menjadi tatasusunan yang mengandungi hanya elemen daripada $arr2 yang tidak terdapat dalam $arr1, mengekalkan struktur tatasusunan asal:
Array ( [3] => Array ( [ITEM] => 4 ) )
Demonstrasi ini membolehkan anda menapis satu tatasusunan dengan berkesan berdasarkan nilai lajur tertentu dalam yang lain tatasusunan sambil mengekalkan struktur tatasusunan asal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membanding dan Menapis Tatasusunan Bersekutu Dengan Cekap Berdasarkan Lajur Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!