Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Cekap Mencari Perbezaan dalam Tatasusunan Bersekutu Berdasarkan Kunci Tertentu?
Membandingkan Perbezaan Nilai Bersekutu dalam Tatasusunan Dua Dimensi
Selalunya dalam pengaturcaraan, kita perlu membandingkan dua tatasusunan dan mengekstrak perbezaan sahaja. Tugas ini menjadi lebih rumit apabila tatasusunan mengandungi data bersekutu, terutamanya apabila perbandingan harus memfokuskan pada nilai kunci tertentu.
Pertimbangkan dua tatasusunan dengan baris data bersekutu:
$array1 = array( array('ITEM' => 1), array('ITEM' => 2), array('ITEM' => 3), ); $array2 = array( array('ITEM' => 2), array('ITEM' => 3), array('ITEM' => 1), array('ITEM' => 4), );
Matlamatnya adalah untuk tapis tatasusunan kedua untuk mengecualikan item yang terdapat dalam tatasusunan pertama, tetapi secara khusus membandingkan 'ITEM' nilai.
Menggunakan array_udiff dengan Fungsi Perbandingan Tersuai
Fungsi array_diff() tidak mencukupi untuk tujuan ini kerana ia membandingkan keseluruhan baris. Untuk memfokuskan secara eksklusif pada nilai 'ITEM', kami mentakrifkan fungsi perbandingan tersuai untuk array_udiff().
function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; }
Fungsi ini menolak nilai 'ITEM' dan mengembalikan perbezaannya.
Sekarang , kita boleh menggunakan fungsi ini dalam array_udiff():
$arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');
Pembolehubah $arrdiff akan mengandungi yang dikehendaki hasil:
Array ( [3] => Array ( [ITEM] => 4 ) )
Pendekatan ini mengekalkan struktur tatasusunan sedia ada dan memfokuskan pada nilai utama 'ITEM' khusus untuk perbandingan.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Perbezaan dalam Tatasusunan Bersekutu Berdasarkan Kunci Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!