Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk membandingkan elemen yang berbeza dalam tatasusunan dalam php

Bagaimana untuk membandingkan elemen yang berbeza dalam tatasusunan dalam php

PHPz
PHPzasal
2023-04-18 14:10:26726semak imbas

Dalam PHP, membandingkan elemen berbeza antara dua tatasusunan adalah keperluan biasa, contohnya:

  • Membandingkan sama ada laluan halaman mereka berbeza antara dua versi berbeza Bahagian tapak web
  • Bandingkan baris yang berbeza antara dua fail CSV
  • Bandingkan struktur jadual antara dua pangkalan data yang berbeza untuk melihat sama ada terdapat sebarang perbezaan

Artikel ini akan memperkenalkan Beberapa cara untuk membandingkan elemen berbeza tatasusunan dalam PHP.

Kaedah 1: Gunakan fungsi array_diff

Fungsi array_diff ialah fungsi terbina dalam PHP yang membandingkan perbezaan array Penggunaan fungsi ini adalah seperti berikut:

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

Fungsi ini menerima dua parameter Tatasusunan, mengembalikan tatasusunan baharu yang mengandungi unsur-unsur dalam tatasusunan pertama yang tidak muncul dalam tatasusunan kedua.

Sebagai contoh, kod berikut membandingkan perbezaan antara dua tatasusunan:

$arr1 = [1, 2, 3, 4, 5];
$arr2 = [4, 5, 6, 7, 8];

$diff = array_diff($arr1, $arr2);

print_r($diff); // 输出 [1, 2, 3]

Walaupun fungsi array_diff boleh mencari elemen berbeza bagi dua tatasusunan, jika terdapat unsur pendua dalam tatasusunan, Fungsi mungkin memberikan hasil yang salah.

Contohnya:

$arr1 = [1, 2, 3, 3, 3, 4, 5];
$arr2 = [3, 4, 5, 5, 5, 6, 7];

$diff = array_diff($arr1, $arr2);

print_r($diff); // 输出 [1, 2]

Dalam contoh ini, hasil tatasusunan $diff hendaklah [1, 2, 3], tetapi kerana terdapat berbilang "3" dan "5 ", jadi fungsi array_diff tidak dapat membandingkan perbezaan dengan betul.

Kaedah 2: Gunakan fungsi array_diff_assoc

Fungsi array_diff_assoc juga merupakan fungsi terbina dalam PHP, tetapi fungsi ini membandingkan sama ada kekunci dan nilai dalam dua tatasusunan adalah sama.

Penggunaan fungsi ini adalah seperti berikut:

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

Menerima dua atau lebih parameter tatasusunan dan mengembalikan semua item dalam tatasusunan pertama yang tidak wujud dalam tatasusunan lain atau kuncinya dan nilai tidak sama.

Contohnya:

$arr1 = ["a" => 1, "b" => 2, "c" => 3];
$arr2 = ["a" => 1, "b" => 2, "c" => 4];

$diff = array_diff_assoc($arr1, $arr2);

print_r($diff); // 输出 ["c" => 3]

Dalam contoh ini, hasil tatasusunan $diff ialah ["c" => 3], kerana nilai yang sepadan dengan kekunci "c" dalam tatasusunan $arr1 ialah 3, tiada kunci sedemikian dalam tatasusunan $arr2 atau nilainya tidak sama dengan 3.

Kaedah 3: Gunakan fungsi tersuai

Menggunakan fungsi tersuai untuk membandingkan elemen berbeza dua tatasusunan ialah kaedah yang serba boleh dan boleh disesuaikan.

Sebagai contoh, berikut ialah fungsi yang membandingkan elemen yang berbeza dalam dua tatasusunan:

function array_diff_custom($arr1, $arr2) {
    $diff = [];

    foreach ($arr1 as $key => $value) {
        if (!in_array($value, $arr2)) {
            $keyInArr2 = array_search($value, $arr2);
            if ($keyInArr2 !== false) {
                unset($arr2[$keyInArr2]);
            }
            $diff[$key] = $value;
        }
    }

    foreach ($arr2 as $key => $value) {
        $diff[$key] = $value;
    }

    return $diff;
}

Fungsi ini melaksanakan perkara berikut:

  • Lelaran lebih $arr1 Semua elemen dalam $arr2, jika tidak dalam $arr2, tambahkannya pada tatasusunan $diff, jika tidak alih keluarnya daripada $arr2.
  • Gelung semua elemen dalam $arr2 dan tambahkannya pada tatasusunan $diff.

Contohnya:

$arr1 = [1, 2, 3, 3, 3, 4, 5];
$arr2 = [3, 4, 5, 5, 5, 6, 7];

$diff = array_diff_custom($arr1, $arr2);

print_r($diff); // 输出 [0 => 1, 1 => 2, 2 => 3, 5 => 4, 6 => 5, 7 => 6, 8 => 7]

Memandangkan fungsi tersuai menggunakan kaedah traversal, kecekapannya rendah dan masalah prestasi mungkin berlaku apabila tatasusunan besar.

Kesimpulan

Artikel ini memperkenalkan tiga cara untuk membandingkan elemen tatasusunan yang berbeza dalam PHP, fungsi array_diff, fungsi array_diff_assoc dan fungsi tersuai Mereka masing-masing mempunyai kelebihan dan kekurangan mereka sendiri bergantung pada senario Aplikasi dan keperluan khusus.

Atas ialah kandungan terperinci Bagaimana untuk membandingkan elemen yang berbeza dalam 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