Dalam PHP, kadangkala kita perlu menyahduplikasi tatasusunan, iaitu, mengalih keluar elemen berulang. Proses ini mungkin kelihatan mudah, tetapi situasi yang berbeza mungkin memerlukan pendekatan yang berbeza. Seterusnya, kita akan membincangkan beberapa kaedah penyahduplikasi tatasusunan biasa dan senario aplikasinya.
1. Gunakan fungsi terbina dalam PHP array_unique()
PHP menyediakan array_unique() fungsi terbina dalam, yang boleh melaksanakan operasi penyahduplikasian secara langsung pada tatasusunan. Sintaks untuk menggunakan fungsi ini adalah seperti berikut:
array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
Antaranya, $array ialah tatasusunan yang akan dinyahduplikasi, $sort_flags ialah parameter pilihan, digunakan untuk menentukan kaedah perbandingan elemen dan boleh mengambil nilai berikut:
The kod sampel adalah seperti berikut:
$arr = array(1, 2, 2, 3, 4, 4, 5); $new_arr = array_unique($arr); print_r($new_arr); // 输出:Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
Gunakan array_unique Kelebihan () ialah ia mudah dan mudah digunakan, dan operasi penyahduaan tatasusunan boleh diselesaikan dalam satu baris kod. Kelemahannya ialah ia hanya boleh mengendalikan tatasusunan satu dimensi Jika anda ingin mengendalikan tatasusunan berbilang dimensi, pemprosesan tambahan diperlukan.
2. Gunakan gelung + pertimbangan bersyarat
Jika anda ingin memproses tatasusunan berbilang dimensi, anda boleh menggunakan gelung + pertimbangan bersyarat untuk mengalih keluar pendua. Idea kaedah ini adalah untuk melintasi tatasusunan, bandingkan setiap elemen secara bergilir-gilir dengan elemen sebelumnya dalam tatasusunan (kecuali yang telah dinyahduplikasikan), langkau jika pendua ditemui, jika tidak, tambahkan elemen itu pada tatasusunan yang dinyahduplikasi. Kod sampel adalah seperti berikut:
$arr = array( array(1, 2, 2), array(3, 4, 4), array(5, 6, 7), array(1, 2, 2) ); $new_arr = array(); foreach ($arr as $value) { if (!in_array($value, $new_arr)) { $new_arr[] = $value; } } print_r($new_arr); // 输出:Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 2 ) [1] => Array ( [0] => 3 [1] => 4 [2] => 4 ) [2] => Array ( [0] => 5 [1] => 6 [2] => 7 ) )
Kelebihan menggunakan gelung + pertimbangan bersyarat ialah ia sesuai untuk pelbagai bentuk tatasusunan, termasuk tatasusunan berbilang dimensi, dan boleh mengekalkan prestasi yang baik apabila jumlah data adalah besar. Kelemahannya ialah ia memerlukan menulis lebih banyak kod, dan mudah untuk membuat kesilapan jika terdapat sedikit kelemahan.
3. Gunakan PHP fungsi terbina dalam array_reduce()
Selain array_unique(), PHP juga menyediakan fungsi terbina dalam array_reduce(), yang boleh digunakan untuk melaksanakan operasi pengurangan pada tatasusunan. Untuk penyahduplikasian tatasusunan, kita boleh menukar tatasusunan kepada tatasusunan bersekutu dengan elemen tatasusunan sebagai kunci dan nilai kosong, dan kemudian cantumkannya dengan tatasusunan asal Jika elemen yang sama ditemui, langkau mereka, jika tidak, tambahkannya pada cantuman seterusnya tatasusunan. Kod sampel adalah seperti berikut:
$arr = array(1, 2, 2, 3, 4, 4, 5); $new_arr = array_reduce($arr, function($carry, $item) { if(!array_key_exists($item, $carry)) { $carry[$item] = null; } return $carry; }, array()); print_r(array_keys($new_arr)); // 输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
Kelebihan menggunakan array_reduce() ialah ia boleh mengendalikan pelbagai bentuk tatasusunan secara fleksibel dan kodnya ringkas. Kelemahannya ialah prestasi mungkin dikurangkan untuk tatasusunan dengan jumlah data yang besar.
Ringkasnya, terdapat banyak cara untuk menyahduplikasi tatasusunan dalam PHP, dan anda boleh memilih kaedah yang sesuai mengikut situasi tertentu. Untuk tatasusunan satu dimensi, adalah disyorkan untuk menggunakan array_unique() terlebih dahulu untuk tatasusunan berbilang dimensi, adalah disyorkan untuk menggunakan gelung + pertimbangan bersyarat atau array_reduce(). Prestasi program dan kualiti data boleh dipertingkatkan dengan menyahduplikasi data.
Atas ialah kandungan terperinci Bagaimana untuk membuang tatasusunan yang sama dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!