Dalam pembangunan PHP, selalunya diperlukan untuk mengisih tatasusunan Walau bagaimanapun, elemen pendua mungkin muncul dalam tatasusunan yang diisih Pada masa ini, kita perlu menulis kod untuk memadamkan elemen pendua daripada tatasusunan. Artikel ini akan menunjukkan kepada anda cara mengalih keluar pendua daripada tatasusunan yang diisih dalam PHP.
1. Gunakan fungsi array_unique()
Fungsi array_unique() boleh mengalih keluar elemen pendua dalam tatasusunan Walau bagaimanapun, perlu diambil perhatian bahawa fungsi ini hanya boleh mengendalikan tatasusunan yang tidak diisih, jadi Kami perlu mengisih tatasusunan terlebih dahulu menggunakan fungsi seperti sort() atau rsort().
Kod sampel:
$arr = array(1, 2, 2, 3, 4, 4, 5); sort($arr);//排序 $newArr = array_unique($arr);//去重 print_r($newArr);
Hasil output:
Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
Jika anda perlu mengekalkan nama kunci tatasusunan asal, anda boleh menggunakan parameter kedua bagi fungsi array_unique() :
$arr = array('a' => 1, 'b' => 2, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 4, 'g' => 5); asort($arr);//排序 $newArr = array_unique($arr, SORT_REGULAR);//去重 print_r($newArr);
Hasil keluaran:
Array ( [a] => 1 [b] => 2 [d] => 3 [e] => 4 [g] => 5 )
2. Lintas tatasusunan untuk memadamkan pendua
Cara lain untuk memadamkan pendua dalam tatasusunan yang diisih. adalah untuk melintasi tatasusunan, Apabila elemen pendua ditemui, gunakan fungsi unset() untuk mengalih keluar elemen daripada tatasusunan.
Kod sampel:
$arr = array(1, 2, 2, 3, 4, 4, 5); sort($arr);//排序 for($i=0;$i<count($arr)-1;$i++){ if($arr[$i] == $arr[$i+1]){ unset($arr[$i+1]);//删除重复元素 } } print_r($arr);
Hasil keluaran:
Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
Perlu diambil perhatian bahawa menggunakan kaedah ini untuk memadam elemen akan menyebabkan indeks tatasusunan asal menjadi disusun semula Oleh itu, anda perlu menggunakan indeks $i+1 apabila memadam, jika tidak unsur pendua akan terlepas.
3. Gunakan rekursi tatasusunan untuk menyahduplikasi
Jika tatasusunan berbilang dimensi, kita boleh menggunakan rekursi untuk menyahduplikasi.
Kod sampel:
$arr = array( 1, 2, 2, array( 3, 4, 4, 5, array( 6, 7, 7, ), ), ); sort($arr);//排序 function uniqueArray($arr){ foreach($arr as $k => $v){ if(is_array($v)){ $arr[$k] = uniqueArray($v); } } return array_unique($arr); } $newArr = uniqueArray($arr);//递归去重 print_r($newArr);
Hasil keluaran:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [6] => 5 [9] => 6 [10] => 7 )
Kaedah ini boleh menyahduplikasi tatasusunan berbilang dimensi dan mengekalkan struktur tatasusunan asal.
Kesimpulan
Dalam pembangunan PHP, memadamkan pendua dalam tatasusunan yang diisih ialah operasi yang sangat biasa Artikel ini memperkenalkan tiga kaedah: menggunakan fungsi array_unique(), merentasi tatasusunan untuk memadam dan tatasusunan Deduplikasi berulang. Kaedah yang berbeza sesuai untuk situasi yang berbeza, dan anda boleh memilih kaedah yang sesuai dengan anda mengikut keperluan anda.
Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar pendua daripada tatasusunan yang diisih dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!