Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk membuang tatasusunan yang sama dalam php

Bagaimana untuk membuang tatasusunan yang sama dalam php

PHPz
PHPzasal
2023-04-19 09:17:53438semak imbas

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:

  • SORT_REGULAR - Bandingkan elemen dengan cara biasa (tanpa mengubah jenis data elemen)
  • SORT_NUMERIC - Bandingkan elemen berdasarkan nilai berangka
  • SORT_STRING - Bandingkan elemen berdasarkan rentetan
  • SORT_LOCALE_STRING - Bandingkan elemen mengikut tempat semasa
  • SORT_NATURAL - Bandingkan unsur mengikut susunan semula jadi

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!

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