Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengetahui sama ada nilai yang ditentukan wujud dalam tatasusunan tanpa sensitiviti huruf besar menggunakan fungsi in_array dalam PHP

Bagaimana untuk mengetahui sama ada nilai yang ditentukan wujud dalam tatasusunan tanpa sensitiviti huruf besar menggunakan fungsi in_array dalam PHP

WBOY
WBOYasal
2023-06-26 11:49:451529semak imbas

Dalam PHP, kita selalunya perlu mencari sama ada nilai yang ditentukan wujud dalam tatasusunan. Untuk tujuan ini, PHP menyediakan function-in_array() yang sangat mudah, yang boleh mencapai fungsi ini. Tetapi kadangkala kita tidak mahu menjadi sensitif huruf besar-kecil apabila mencari nilai, jadi bagaimana untuk menggunakan fungsi in_array() untuk mencapai carian tidak sensitif huruf besar-besaran? Artikel ini memperincikan cara menyelesaikan masalah ini.

1. Penggunaan asas fungsi in_array()

Penggunaan fungsi in_array() adalah sangat mudah. ​​Ia mengandungi dua parameter: nilai untuk ditemui dan tatasusunan. Fungsi ini mengembalikan nilai Boolean yang menunjukkan sama ada nilai yang ditemui wujud dalam tatasusunan. Berikut ialah contoh penggunaan asas bagi fungsi in_array():

<?php
$fruits = array("apple", "banana", "orange", "pear");
if (in_array("banana", $fruits)) {
    echo "Found banana in the array";
} else {
    echo "Did not find banana in the array";
}
?>

Dalam contoh di atas, kami mentakrifkan tatasusunan $buah yang mengandungi empat elemen dan mencari sama ada "pisang" wujud dalam tatasusunan. Memandangkan "pisang" wujud dalam tatasusunan, fungsi in_array() mengembalikan benar dan kod mengeluarkan "Pisang ditemui dalam tatasusunan".

2. Pelaksanaan fungsi in_array() tidak sensitif huruf

Fungsi in_array() adalah sensitif huruf besar secara lalai, iaitu, ia menganggap huruf besar dan huruf kecil sebagai aksara yang berbeza. Tetapi kadangkala, kita mungkin mahu menjadi tidak peka huruf besar apabila mencari, jadi apakah yang perlu kita lakukan? Pada masa ini kita boleh menyesuaikan fungsi untuk melaksanakan fungsi ini. Berikut ialah contoh pelaksanaan fungsi in_array() yang tidak peka huruf besar dan kecil:

<?php
function in_array_ci($needle, $haystack) {
    return in_array(strtolower($needle), array_map('strtolower', $haystack));
}

$fruits = array("Apple", "Banana", "Orange", "Pear");
if (in_array_ci("banana", $fruits)) {
    echo "Found banana in the array";
} else {
    echo "Did not find banana in the array";
}
?>

Dalam contoh di atas, kami mentakrifkan fungsi yang dipanggil in_array_ci(), yang mengambil dua parameter: nilai untuk ditemui dan tatasusunan. Fungsi ini mula-mula menukar nilai untuk ditemui kepada huruf kecil melalui fungsi terbina dalam PHP strtolower(), dan kemudian menukar semua elemen dalam tatasusunan kepada huruf kecil melalui fungsi array_map(). Kemudian, fungsi in_array() boleh memanggil tatasusunan ditukar ini untuk mencari, dengan itu melengkapkan operasi carian tidak sensitif huruf besar-besaran.

Perlu diambil perhatian bahawa oleh kerana fungsi in_array_ci() tersuai kami memanggil fungsi strtolower() dan array_map(), ia mungkin lebih rendah sedikit daripada fungsi in_array() dari segi prestasi. Jika anda perlu melakukan carian tidak sensitif huruf besar-besaran, adalah disyorkan untuk mengelak daripada menggunakan fungsi tersuai dan sebaliknya menggunakan kaedah lain yang lebih cekap.

3. Merangkumkannya ke dalam kelas untuk digunakan

Untuk menggunakan fungsi in_array() yang tidak peka huruf besar-besaran dengan lebih mudah, kami juga boleh merangkumnya ke dalam kelas untuk memudahkan penggunaan semula dalam projek yang berbeza. Berikut ialah contoh mudah:

<?php
class ArraySearch {
    public static function inArrayCi($needle, $haystack) {
        return in_array(strtolower($needle), array_map('strtolower', $haystack));
    }
}

$fruits = array("apple", "banana", "orange", "pear");
if (ArraySearch::inArrayCi("BaNaNa", $fruits)) {
    echo "Found banana in the array";
} else {
    echo "Did not find banana in the array";
}
?>

Dalam contoh di atas, kami menentukan kelas bernama ArraySearch, yang mempunyai kaedah inArrayCi() untuk melaksanakan operasi carian tidak sensitif huruf besar-besaran. Kaedah ini betul-betul sama dengan prinsip pelaksanaan fungsi tersuai sebelumnya, kecuali sekarang sebagai kaedah kelas, lebih mudah untuk dipanggil oleh kod lain dalam berbilang projek. Apabila menggunakannya, anda hanya perlu memanggilnya melalui nama kelas dan nama kaedah.

Ringkasan

Fungsi in_array() dalam PHP ialah fungsi carian tatasusunan yang sangat mudah, yang boleh merealisasikan fungsi mencari sama ada nilai wujud dalam tatasusunan dengan mudah. Tetapi dalam beberapa kes, kami mahu menjadi tidak peka huruf besar-besaran apabila mencari Dalam kes ini, kami boleh melaksanakan fungsi ini dengan menyesuaikan fungsi, atau merangkumkannya ke dalam kelas. Ini membolehkan anda menggunakan fungsi ini dengan lebih fleksibel, dan memerlukan perhatian terhadap isu prestasi. Saya harap artikel ini dapat membantu pembaca yang sedang belajar PHP.

Atas ialah kandungan terperinci Bagaimana untuk mengetahui sama ada nilai yang ditentukan wujud dalam tatasusunan tanpa sensitiviti huruf besar menggunakan fungsi in_array 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