Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengalih keluar pendua daripada tatasusunan yang diisih dalam PHP

Bagaimana untuk mengalih keluar pendua daripada tatasusunan yang diisih dalam PHP

PHPz
PHPzasal
2023-04-26 10:28:09494semak imbas

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!

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