Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `array_diff_assoc()` Termasuk Baris Biasa Apabila Membandingkan Tatasusunan 2D?
Tapis Baris Tatasusunan 2D Menggunakan Tatasusunan Lain
Anda mempunyai dua tatasusunan 2D dan berhasrat untuk menggunakan array_diff_assoc() untuk mengenal pasti baris unik dalam tatasusunan pertama yang tidak terdapat dalam tatasusunan kedua. Walau bagaimanapun, anda menghadapi masalah apabila baris biasa disertakan dalam hasil.
Isu ini berpunca daripada cara array_diff_assoc() membandingkan nilai. Ia melakukan perbandingan rentetan yang ketat, bermakna nilai mestilah sama dalam kedua-dua jenis dan nilai untuk dianggap sama. Dalam contoh yang diberikan:
<code class="php">$array1 = [ [12 => 'new q sets'], [11 => 'common set'] ]; $array2 = [ [11 => 'common set'] ];</code>
Apabila array_diff_assoc($array1, $array2) dipanggil, perwakilan rentetan kedua-dua tatasusunan ialah "Array." Oleh itu, perbezaan dikesan berdasarkan baris tambahan dalam $array1 ([12] => 'set q baharu'). Akibatnya, baris biasa ([11] => 'set biasa') disertakan dalam perbezaan.
Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan pendekatan perbandingan yang berbeza. Jika data dalam tatasusunan adalah angka atau boleh ditukar kepada angka, anda boleh menggunakan array_diff_uassoc(), yang membolehkan anda menentukan fungsi perbandingan tersuai. Sebagai alternatif, anda boleh menapis baris secara manual dengan mengulangi kedua-dua tatasusunan dan menyemak kesamaan nilai.
Atas ialah kandungan terperinci Mengapakah `array_diff_assoc()` Termasuk Baris Biasa Apabila Membandingkan Tatasusunan 2D?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!