Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `array_diff_assoc()` Termasuk Baris Biasa Apabila Membandingkan Tatasusunan 2D?

Mengapakah `array_diff_assoc()` Termasuk Baris Biasa Apabila Membandingkan Tatasusunan 2D?

Barbara Streisand
Barbara Streisandasal
2024-10-26 06:06:02883semak imbas

Why Does `array_diff_assoc()` Include Common Rows When Comparing 2D Arrays?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn