Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menentukan sama ada terdapat pendua dalam tatasusunan dalam php
Dalam PHP, menentukan sama ada terdapat pendua dalam tatasusunan adalah masalah yang sangat biasa. Kita boleh menyelesaikan masalah ini dengan cara yang berbeza.
Kaedah pertama: gunakan gelung
Kaedah paling asas ialah menggunakan gelung untuk melintasi tatasusunan. Kita boleh mencari pendua dengan meletakkan dua gelung. Seperti yang ditunjukkan di bawah:
function isDuplicate($arr){ for($i=0;$i<count($arr);$i++){ for($j=$i+1;$j<count($arr);$j++){ if($arr[$i]==$arr[$j]) return true; } } return false; }
Dalam kod di atas, kita mula-mula menggunakan gelung pertama untuk lelaran ke atas tatasusunan dan kemudian menggunakan gelung kedua untuk mengulang ke atas item tatasusunan yang tinggal. Jika dua elemen bersebelahan adalah sama, terdapat pendua.
Bagaimanapun, kaedah ini bukanlah yang paling cekap kerana ia memerlukan berbilang gelung Terutama apabila tatasusunan agak besar, bilangan gelung akan menjadi banyak, menyebabkan kecekapan rendah.
Kaedah kedua: Gunakan fungsi in_array()
Kaedah lain ialah menggunakan fungsi in_array() terbina dalam PHP untuk mencari sama ada terdapat pendua dalam tatasusunan. Apa yang dilakukan oleh fungsi ini ialah mencari tatasusunan untuk nilai yang diberikan dan mengembalikan kunci pertama yang ditemui. Seperti yang ditunjukkan di bawah:
function isDuplicate($arr){ $newArr = array_unique($arr); return count($newArr) != count($arr); }
Dalam kod di atas, kami mula-mula menggunakan fungsi array_unique() untuk mengalih keluar pendua dalam tatasusunan, dan kemudian membandingkan panjang tatasusunan selepas mengalih keluar pendua dengan panjang asal tatasusunan. Jika ia tidak konsisten, ini bermakna terdapat pendua dalam tatasusunan asal.
Kaedah ini lebih cekap daripada kaedah pertama kerana ia hanya perlu melintasi tatasusunan sekali, tetapi perlu diingatkan bahawa ia hanya terpakai kepada tatasusunan dengan nilai bukan pendua.
Kaedah ketiga: Gunakan fungsi array_count_values()
Kaedah ketiga ialah menggunakan fungsi array_count_values() terbina dalam PHP untuk mengira kejadian setiap nilai dalam tatasusunan. Jika mana-mana nilai berlaku lebih daripada 1, terdapat pendua. Seperti yang ditunjukkan di bawah:
function isDuplicate($arr){ $countArr = array_count_values($arr); foreach($countArr as $value){ if($value > 1) return true; } return false; }
Dalam kod di atas, kita mula-mula menggunakan fungsi array_count_values() untuk mengira kejadian setiap nilai dalam tatasusunan, dan kemudian menggunakan gelung foreach untuk melintasi tatasusunan statistik, jika terdapat sebarang nilai Bilangan kejadian lebih besar daripada 1, maka ia bermakna terdapat pendua.
Kaedah ini lebih cekap daripada kaedah pertama kerana ia hanya perlu melintasi tatasusunan sekali, tetapi perlu diingat bahawa kaedah ini hanya terpakai kepada tatasusunan dengan nilai bukan pendua.
Kesimpulan
Tidak kira kaedah mana, anda boleh menentukan dengan berkesan sama ada tatasusunan mengandungi pendua. Setiap kaedah ada kelebihan dan kekurangannya. Apabila menggunakannya, anda perlu memilih kaedah yang paling sesuai dengan anda mengikut situasi sebenar.
Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada terdapat pendua dalam tatasusunan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!