Dalam PHP, membandingkan tatasusunan untuk melihat sama ada ia adalah operasi yang sangat biasa. Biasanya, untuk membandingkan dua tatasusunan untuk melihat sama ada ia adalah sama, walaupun elemennya berada dalam susunan yang berbeza, kita perlu mengisihnya dan kemudian membandingkannya satu demi satu. Ia tidak sukar untuk dilakukan, tetapi ia mengambil sedikit masa.
Dalam PHP, terdapat banyak cara mudah untuk membandingkan tatasusunan untuk melihat sama ada ia adalah sama. Di bawah ini kami memperkenalkan beberapa kaedah yang biasa digunakan.
array_diff() fungsi membandingkan dua tatasusunan dan mengembalikan sama ada ia wujud dalam tatasusunan pertama tetapi tidak dalam elemen tatasusunan kedua. Jika dua tatasusunan betul-betul sama, tatasusunan kosong dikembalikan.
Contohnya adalah seperti berikut:
$array1 = array('a', 'b', 'c'); $array2 = array('a', 'b', 'd'); $res = array_diff($array1, $array2); if (empty($res)) { echo '两个数组相等'; } else { echo '两个数组不相等'; }
Kod di atas akan mengeluarkan "dua tatasusunan tidak sama". Ini kerana elemen 'c' dalam array $array1 tidak wujud dalam $array2.
array_diff_assoc() fungsi membandingkan dua tatasusunan dan mengembalikan yang wujud dalam tatasusunan pertama tetapi tidak dalam elemen tatasusunan kedua, dan kuncinya elemen juga dibandingkan.
Contohnya adalah seperti berikut:
$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry'); $array2 = array('a' => 'apple', 'b' => 'orange', 'c' => 'cherry'); $res = array_diff_assoc($array1, $array2); if (empty($res)) { echo '两个数组相等'; } else { echo '两个数组不相等'; }
Kod di atas akan mengeluarkan "dua tatasusunan tidak sama". Ini kerana elemen 'pisang' dalam tatasusunan $array1 tidak wujud dalam $array2, dan kekunci 'b' juga berbeza.
array_diff_key() fungsi membandingkan dua tatasusunan dan mengembalikan kunci yang wujud dalam tatasusunan pertama tetapi tidak wujud dalam tatasusunan kedua Kunci bagi unsur. Perbezaan daripada array_diff() ialah array_diff_key() hanya membandingkan kekunci tatasusunan, bukan nilai yang sepadan dengan kunci.
Contohnya adalah seperti berikut:
$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry'); $array2 = array('a' => 'apple', 'b' => 'orange', 'd' => 'mango'); $res = array_diff_key($array1, $array2); if (empty($res)) { echo '两个数组相等'; } else { echo '两个数组不相等'; }
Kod di atas akan mengeluarkan "dua tatasusunan tidak sama". Ini kerana kekunci 'c' dalam tatasusunan $array1 tidak wujud dalam $array2, dan kekunci 'd' juga berbeza.
array_uintersect_assoc() fungsi membandingkan dua tatasusunan dan mengembalikan elemen yang wujud dalam kedua-dua tatasusunan, dan juga membandingkan elemen. Sepadan dengan array_diff_assoc().
Contohnya adalah seperti berikut:
$array1 = array('a' => 'apple', 'b' => 'banana', 'c' => 'cherry'); $array2 = array('a' => 'apple', 'b' => 'orange', 'c' => 'cherry'); function compare($a, $b) { if ($a === $b) { return 0; } return ($a < $b) ? -1 : 1; } $res = array_uintersect_assoc($array1, $array2, 'compare'); if (count($res) === count($array1) && count($res) === count($array2)) { echo '两个数组相等'; } else { echo '两个数组不相等'; }
Kod di atas akan mengeluarkan "dua tatasusunan tidak sama". Ini kerana kekunci 'b' dalam tatasusunan $array2 sepadan dengan nilai yang berbeza.
Fungsi di atas adalah semua fungsi terbina dalam PHP dan boleh dibandingkan dengan mudah. Tetapi perlu diperhatikan bahawa apabila membandingkan tatasusunan, jenis elemen tidak dibandingkan secara lalai. Jika anda perlu membandingkan jenis elemen, anda boleh menggunakan fungsi dengan panggilan balik yang ditentukan pengguna seperti array_diff_uassoc() dan tentukan kaedah perbandingan jenis dalam fungsi perbandingan tersuai.
Membandingkan sama ada tatasusunan adalah sama dalam PHP bukanlah masalah yang rumit. Bergantung pada keperluan yang berbeza, kaedah yang berbeza boleh dipilih.
Atas ialah kandungan terperinci PHP membandingkan tatasusunan untuk melihat sama ada ia adalah sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!