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

Apr 26, 2023 am 10:23 AM

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!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Apakah piawaian pengekodan PHP terkini dan amalan terbaik? Mar 10, 2025 pm 06:16 PM

Apakah piawaian pengekodan PHP terkini dan amalan terbaik?

Bagaimana saya bekerja dengan sambungan php dan pecl? Bagaimana saya bekerja dengan sambungan php dan pecl? Mar 10, 2025 pm 06:12 PM

Bagaimana saya bekerja dengan sambungan php dan pecl?

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP? Mar 10, 2025 pm 06:15 PM

Bagaimana untuk melaksanakan beratur mesej (RabbitMQ, Redis) dalam PHP?

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi? Mar 03, 2025 pm 04:47 PM

Adakah Deduplication Array PHP perlu dipertimbangkan untuk kerugian prestasi?

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama? Mar 03, 2025 pm 04:51 PM

Bolehkah PHP Array Deduplication memanfaatkan keunikan nama utama?

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:50 PM

Apakah teknik pengoptimuman untuk deduplikasi tatasusunan php

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP? Mar 10, 2025 pm 06:12 PM

Bagaimana menggunakan refleksi untuk menganalisis dan memanipulasi kod PHP?

Apakah amalan terbaik untuk deduplikasi tatasusunan php Apakah amalan terbaik untuk deduplikasi tatasusunan php Mar 03, 2025 pm 04:41 PM

Apakah amalan terbaik untuk deduplikasi tatasusunan php

See all articles