Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Cekap Mencari Perbezaan dalam Tatasusunan Bersekutu Berdasarkan Kunci Tertentu?

Bagaimana untuk Cekap Mencari Perbezaan dalam Tatasusunan Bersekutu Berdasarkan Kunci Tertentu?

Barbara Streisand
Barbara Streisandasal
2024-12-26 05:04:13201semak imbas

How to Efficiently Find Differences in Associative Arrays Based on a Specific Key?

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!

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