Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP melaksanakan penyingkiran tatasusunan pendua

PHP melaksanakan penyingkiran tatasusunan pendua

WBOY
WBOYasal
2023-05-05 21:19:07644semak imbas

PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas dalam pengaturcaraan web dan sesuai untuk digunakan dengan HTML untuk menjana halaman web dinamik.

Dalam pengaturcaraan PHP, tatasusunan sering digunakan untuk menyimpan data. Walau bagaimanapun, dalam pembangunan sebenar, mungkin terdapat unsur pendua dalam tatasusunan, yang akan menjejaskan ketepatan dan kecekapan program. Oleh itu, mencapai deduplikasi tatasusunan adalah isu penting dalam pembangunan PHP.

Berikut akan memperkenalkan beberapa kaedah untuk mencapai penyahduplikasi tatasusunan dalam PHP.

1 Gunakan gelung

Cara paling mudah ialah menggunakan gelung untuk merentasi tatasusunan, bandingkan setiap elemen dengan elemen selepasnya dan padamkan elemen selepasnya jika ia diduplikasi. Kerumitan melakukan ini ialah O(n^2), yang tidak begitu cekap.

Kodnya adalah seperti berikut:

$arr = array(1,2,3,3,4,5,5);

for($i = 0; $i < count($arr); $i++){
    for($j = $i + 1; $j < count($arr); $j++){
        if($arr[$i] == $arr[$j]){
            array_splice($arr,$j,1); //删除数组中指定位置的元素
            $j--; //删除元素后,数组长度减1,需要将指针向前移一位
        }
    }
}

print_r($arr); //输出结果为 [1,2,3,4,5]

2 Gunakan fungsi array_unique

PHP menyediakan fungsi array_unique() terbina dalam, yang boleh melakukan operasi penyahduplikasian secara langsung pada tatasusunan. . Fungsi ini mengembalikan tatasusunan baharu di mana setiap elemen muncul sekali sahaja.

Kodnya adalah seperti berikut:

$arr = array(1,2,3,3,4,5,5);

$new_arr = array_unique($arr); //去重

print_r($new_arr); //输出结果为 [1,2,3,4,5]

Kaedah ini mudah digunakan dan agak cekap, tetapi sila ambil perhatian bahawa fungsi ini hanya boleh mengalih keluar elemen dengan nilai yang sama, bukan elemen yang sama.

3. Gunakan fungsi array_flip dan array_keys

array_flip() fungsi membalikkan kekunci dan nilai dalam tatasusunan dan mengembalikan tatasusunan baharu, dengan nilai tatasusunan asal ialah kunci bagi tatasusunan baharu, Kekunci ialah nilai tatasusunan baharu. Memandangkan kekunci tatasusunan baharu adalah unik, anda boleh terus menggunakan fungsi array_keys() untuk mendapatkan kunci untuk mencapai penyahduplikasian.

Kodnya adalah seperti berikut:

$arr = array(1,2,3,3,4,5,5);

$new_arr = array_flip($arr); //翻转数组的键和值
$new_arr = array_keys($new_arr); //获取新数组的键,即为去重后的结果

print_r($new_arr); //输出结果为 [1,2,3,4,5]

Kaedah ini serupa dengan array_unique(). .

4. Gunakan fungsi gelung dan in_array

Semasa menggelung melalui tatasusunan, gunakan fungsi in_array() untuk menentukan sama ada elemen semasa muncul di antara elemen yang telah diproses. padamkan elemen semasa.

Kodnya adalah seperti berikut:

$arr = array(1,2,3,3,4,5,5);

$new_arr = array(); //新数组用于存储不重复的元素

foreach($arr as $value){ 
    if(!in_array($value,$new_arr)){ //判断当前元素是否已经存在于新数组中
        $new_arr[] = $value; //若不存在,则添加至新数组
    }
}

print_r($new_arr); //输出结果为 [1,2,3,4,5]

Kaedah ini juga mempunyai kerumitan O(n^2), tetapi ia lebih cekap daripada kaedah 1 dan sesuai untuk memproses data bersaiz kecil dan sederhana .

Ringkasnya, terdapat banyak cara untuk melaksanakan penyahduplikasian tatasusunan dalam PHP Kaedah mana yang hendak dipilih perlu dipilih berdasarkan situasi sebenar. Pada masa yang sama, kita mesti memberi perhatian kepada kecekapan dan ketepatan algoritma, serta kesederhanaan dan kebolehbacaan kod.

Atas ialah kandungan terperinci PHP melaksanakan penyingkiran tatasusunan pendua. 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