Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menyemak sama ada terdapat pendua dalam tatasusunan dalam php

Bagaimana untuk menyemak sama ada terdapat pendua dalam tatasusunan dalam php

PHPz
PHPzasal
2023-04-26 10:23:51903semak imbas

Dalam PHP, menyemak tatasusunan untuk nilai pendua adalah tugas asas. Dalam artikel ini, kami akan meneroka cara menyemak sama ada terdapat nilai pendua dalam tatasusunan dalam PHP dan menyediakan beberapa penyelesaian.

1. Gunakan fungsi terbina dalam PHP

PHP mempunyai banyak fungsi terbina dalam yang berguna yang boleh menyelesaikan masalah tatasusunan dalam PHP. Berikut ialah satu fungsi sedemikian:

array_unique() — Alih keluar pendua daripada tatasusunan

Jika matlamat anda adalah untuk menghapuskan nilai pendua sepenuhnya, kaedah ini adalah kaedah yang sangat mudah. Ia mengembalikan tatasusunan baharu yang mengandungi hanya nilai unik. Jika terdapat masalah pengisihan, anda boleh menggunakan fungsi sort() untuk mengisih.

Contohnya:

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

Output:

Array (
      [0] => 1
      [1] => 2
      [3] => 3
      [4] => 4
      [7] => 5
    )

Seperti yang ditunjukkan di atas, kami hanya menghantar tatasusunan sebelumnya ke dalam fungsi array_unique(), dan untuk perkara yang sama Nilai dinyahduplikasi. Tetapi kaedah ini hanya sesuai untuk menghapuskan nilai pendua sepenuhnya.

2. Gunakan gelung PHP

Jika anda perlu mencari semua nilai pendua dalam tatasusunan, mungkin pilihan terbaik ialah menggunakan gelung. Berikut ialah cara untuk mencari nilai pendua menggunakan gelung dalam PHP:

$array = array(2, 5, 6, 2, 8, 5, 1);
 
$result_array = array();
foreach ($array as $val) {
    $result_array[$val] = isset($result_array[$val]) ? ++$result_array[$val] : 1;
}
 
foreach ($result_array as $key => $val) {
    if ($val > 1) {
        echo "{$key} 重复了{$val}次 <br>";
    }
}

Output:

2 重复了2次
5 重复了2次

Dalam kod di atas, kami menggunakan gelung untuk mengulangi tatasusunan dan tambah setiap elemen digunakan sebagai kunci dalam tatasusunan hasil. Jika kunci diambil alih, maka ia ditambah satu kunci pada satu masa. Jika mana-mana kunci diulang berkali-kali, maka kita boleh lulus gelung lain untuk mengeluarkan elemen ini bersama-sama dengan bilangan kejadian.

3. Gunakan fungsi PHP count()

Kadangkala, kita perlu menyemak dengan cepat sama ada terdapat nilai pendua dalam tatasusunan tanpa mengalih keluar nilai pendua. Dalam kes ini, kita boleh menggunakan fungsi count() PHP.

Berikut ialah contoh pendekatan ini:

$array = array(2, 5, 6, 2, 8, 5, 1);
 
if (count($array) === count(array_unique($array))) {
    echo "没有重复值";
} else {
    echo "有重复值";
}

Output:

有重复值

Dalam kod di atas, kami menggunakan fungsi array_unique() untuk mengalih keluar pendua, Kemudian gunakan fungsi count() untuk menyemak sama ada dua tatasusunan adalah saiz yang sama. Jika ia adalah sama dan tiada nilai pendua dalam tatasusunan, maka nilai count($array) === count(array_unique($array)) adalah benar.

Kesimpulan

Menyemak sama ada terdapat nilai pendua dalam tatasusunan boleh menjadi tugas biasa dalam PHP. Dalam artikel ini, kami telah membincangkan tiga cara untuk menyemak sama ada terdapat nilai pendua dalam tatasusunan PHP:

  1. Menggunakan array_unique() fungsi terbina dalam PHP, anda boleh mengalih keluar nilai pendua ​​daripada tatasusunan.
  2. Menggunakan gelung PHP, anda boleh mencari semua nilai pendua.
  3. Gunakan fungsi PHP count() untuk menyemak dengan cepat sama ada terdapat nilai pendua dalam tatasusunan.

Selain itu, kesan serupa boleh dicapai menggunakan kaedah pengumpulan, menggunakan kelas SplObjectStorage terbina dalam PHP. Akhir sekali, sekeping kod yang menggunakan kelas SplObjectStorage untuk menyemak nilai pendua disediakan untuk rujukan anda:

$array = array(2, 5, 6, 2, 8, 5, 1);

$splObj = new SplObjectStorage();

foreach ($array as $value) {
    $splObj->attach($value);
}

if (count($array) === $splObj->count()) {
    echo "没有重复值";
} else {
    echo "有重复值";
}

Di atas ialah kaedah menggunakan PHP untuk menyemak sama ada terdapat nilai pendua ​​dalam tatasusunan saya harap ia akan membantu anda.

Atas ialah kandungan terperinci Bagaimana untuk menyemak sama ada terdapat pendua dalam tatasusunan 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