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

Bagaimana untuk mengalih keluar pendua daripada tatasusunan yang diisih dalam PHP

PHPz
Lepaskan: 2023-04-26 14:12:23
asal
575 orang telah melayarinya

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

Hasil output:

Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
Salin selepas log masuk

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

Hasil keluaran:

Array ( [a] => 1 [b] => 2 [d] => 3 [e] => 4 [g] => 5 )
Salin selepas log masuk

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

Hasil keluaran:

Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
Salin selepas log masuk

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

Hasil keluaran:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [6] => 5 [9] => 6 [10] => 7 )
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan