Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cari perbezaan antara dua tatasusunan dalam php

Cari perbezaan antara dua tatasusunan dalam php

WBOY
WBOYasal
2023-05-11 10:00:072071semak imbas

Dalam pengaturcaraan PHP, selalunya perlu melakukan operasi pada tatasusunan, seperti persilangan, kesatuan, pelengkap, dll. Salah satu operasi yang biasa digunakan adalah untuk mencari perbezaan antara dua tatasusunan, iaitu, memadam unsur-unsur yang terdapat dalam satu tatasusunan dalam tatasusunan yang lain untuk mendapatkan perbezaannya. Dalam artikel ini, kami akan memperkenalkan dua kaedah berbeza untuk mencari perbezaan dua tatasusunan.

Kaedah 1: Gunakan fungsi array_diff()

Fungsi array_diff() ialah fungsi terbina dalam PHP yang boleh digunakan untuk membandingkan perbezaan antara dua atau lebih tatasusunan dan mengembalikan tatasusunan perbezaan. Bentuk fungsi ini adalah seperti berikut:

array array_diff ( array $array1 , array $array2 [, array $... ] )

Antaranya, $array1 dan $array2 ialah dua tatasusunan untuk dibandingkan, dan $... menunjukkan bahawa beberapa set parameter tatasusunan boleh diluluskan untuk perbandingan. Fungsi ini mengembalikan tatasusunan bersekutu yang terdiri daripada semua elemen yang terdapat dalam $array1 tetapi tidak hadir dalam mana-mana tatasusunan parameter lain.

Mari kita lihat contoh di bawah:

$array1 = array("a", "b", "c", "d", "e");
$array2 = array("b", "d", "f");
$result = array_diff($array1, $array2);
print_r($result);

Hasil keluaran kod di atas ialah:

Array
(
    [0] => a
    [2] => c
    [4] => e
)

Seperti yang anda lihat, fungsi berjaya mengembalikan perbezaan antara kedua-dua tatasusunan sebagai [a, c, e].

Kaedah 2: Gunakan gelung foreach

Selain menggunakan fungsi terbina dalam, kita juga boleh menggunakan gelung foreach untuk mencari perbezaan antara dua tatasusunan. Pelaksanaan kaedah ini adalah untuk merentasi tatasusunan 1 daripada perbezaan yang ditetapkan untuk ditemui, dan melakukan perbandingan bulat pada tatasusunan 2. Jika elemen dalam tatasusunan 1 wujud dalam tatasusunan 2, padamkan elemen dalam tatasusunan 2, jika tidak ia akan disimpan dalam tatasusunan 2. menjadi tatasusunan hasil.

Mari kita lihat satu kes:

$array1 = array("a", "b", "c", "d", "e");
$array2 = array("b", "d", "f");
$result = array();
foreach ($array1 as $value) {
    $exist = false;
    foreach ($array2 as $key => $val) {
        if ($val == $value) {
            unset($array2[$key]);
            $exist = true;
            break;
        }
    }
    if (!$exist) {
        $result[] = $value;
    }
}
print_r($result);

Hasil keluaran kod di atas adalah sama dengan kaedah satu:

Array
(
    [0] => a
    [2] => c
    [4] => e
)

Seperti yang anda lihat, kaedah ini menyedari perbezaan melalui gelung berganda set fungsi. Dalam gelung peringkat pertama, setiap elemen dalam tatasusunan 1 dilalui dalam gelung peringkat kedua, setiap elemen dalam tatasusunan 2 dilalui, dan elemen yang sama dipadamkan melalui fungsi tidak ditetapkan, dan bendera $wujud digunakan untuk merekodkan sama ada Unsur yang sama wujud. Akhir sekali, elemen yang tiada dalam tatasusunan 2 disimpan dalam tatasusunan hasil.

Ringkasan

Dalam pengaturcaraan PHP, mencari perbezaan antara dua tatasusunan ialah operasi biasa. Artikel ini memperkenalkan dua kaedah mencari set perbezaan, satu ialah menggunakan fungsi terbina dalam array_diff(), dan satu lagi ialah melaksanakannya melalui gelung berganda. Tidak kira kaedah mana yang digunakan, set perbezaan tatasusunan boleh diperolehi dengan mudah.

Atas ialah kandungan terperinci Cari perbezaan antara dua tatasusunan dalam php. 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