Bagaimana untuk membandingkan elemen yang berbeza dalam tatasusunan dalam php

PHPz
Lepaskan: 2023-04-18 14:40:32
asal
662 orang telah melayarinya

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 $... ] )
Salin selepas log masuk

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]
Salin selepas log masuk

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]
Salin selepas log masuk

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 $... ] )
Salin selepas log masuk

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]
Salin selepas log masuk

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; }
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!