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
Lepaskan: 2023-04-26 13:37:35
asal
901 orang telah melayarinya

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);
Salin selepas log masuk

Output:

Array (
      [0] => 1
      [1] => 2
      [3] => 3
      [4] => 4
      [7] => 5
    )
Salin selepas log masuk

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>";
    }
}
Salin selepas log masuk

Output:

2 重复了2次
5 重复了2次
Salin selepas log masuk

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 "有重复值";
}
Salin selepas log masuk

Output:

有重复值
Salin selepas log masuk

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 "有重复值";
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan