Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk membandingkan elemen yang berbeza dalam tatasusunan dalam php
Dalam PHP, membandingkan elemen berbeza antara dua tatasusunan adalah keperluan biasa, contohnya:
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:
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!