ホームページ  >  記事  >  バックエンド開発  >  PHPのin_array関数を使用して、大文字と小文字を区別せずに指定された値が配列内に存在するかどうかを確認する方法

PHPのin_array関数を使用して、大文字と小文字を区別せずに指定された値が配列内に存在するかどうかを確認する方法

WBOY
WBOYオリジナル
2023-06-26 11:49:451356ブラウズ

PHP では、指定された値が配列内に存在するかどうかを確認する必要があることがよくあります。この目的のために、PHP はこの機能を実現できる非常に便利な function-in_array() を提供します。しかし、値を検索するときに大文字と小文字を区別したくない場合もあります。その場合、in_array() 関数を使用して大文字と小文字を区別しない検索を実現するにはどうすればよいでしょうか?この記事では、この問題を解決する方法について詳しく説明します。

1. in_array() 関数の基本的な使用法

in_array() 関数の使用法は非常に簡単で、検索する値と検索する配列の 2 つのパラメーターが含まれています。この関数は、検索する値が配列内に存在するかどうかを示すブール値を返します。以下は、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";
}
?>

上の例では、4 つの要素を含む配列 $fruits を定義し、その配列に「バナナ」が存在するかどうかを調べます。 「バナナ」は配列内に存在するため、in_array() 関数は true を返し、コードは「配列内にバナナが見つかりました」と出力します。

2. 大文字と小文字を区別しない in_array() 関数の実装

in_array() 関数はデフォルトで大文字と小文字を区別します。つまり、大文字と小文字を別の文字として扱います。しかし、場合によっては、検索時に大文字と小文字を区別しないようにしたい場合があります。現時点では、この機能を実装するために関数をカスタマイズできます。以下は、大文字と小文字を区別しない in_array() 関数の例です。

<?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";
}
?>

上の例では、in_array_ci() という名前の関数を定義します。この関数には、検出する値と検出する配列の 2 つのパラメータがあります。検索する。この関数は、まず PHP 組み込み関数 strto lower() を使用して検索する値を小文字に変換し、次に array_map() 関数を使用して配列内のすべての要素を小文字に変換します。次に、 in_array() 関数はこの変換された配列を呼び出して検索することができ、これにより大文字と小文字を区別しない検索操作が完了します。

カスタムの in_array_ci() 関数は strtolower() 関数と array_map() 関数を呼び出すため、パフォーマンスの点で in_array() 関数よりわずかに劣る可能性があることに注意してください。大文字と小文字を区別しない大規模な検索を実行する必要がある場合は、カスタム関数の使用を避け、代わりに他のより効率的な方法を使用することをお勧めします。

3. 使用するためにクラスにカプセル化する

大文字と小文字を区別しない in_array() 関数をより便利に使用するために、それをクラスにカプセル化し、さまざまなプロジェクトでの使用を容易にすることもできます。再利用されました。以下は簡単な例です:

<?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";
}
?>

上の例では、ArraySearch という名前のクラスを定義します。このクラスには、大文字と小文字を区別しない検索操作を実装するための inArrayCi() メソッドがあります。このメソッドは、クラス メソッドとして、複数のプロジェクト内の他のコードから簡単に呼び出せることを除いて、以前のカスタム関数の実装原則とまったく同じです。使用するときは、クラス名とメソッド名を使用して呼び出すだけです。

まとめ

PHPのin_array()関数は、配列に値が存在するかどうかを調べる機能を簡単に実現できる、非常に便利な配列検索関数です。ただし、検索時に大文字と小文字を区別しないようにしたい場合は、関数をカスタマイズするか、クラスにカプセル化することでこの関数を実装できます。これにより、この機能をより柔軟に使用できるようになり、パフォーマンスの問題に注意する必要があります。この記事が PHP を学習している読者にとって役立つことを願っています。

以上がPHPのin_array関数を使用して、大文字と小文字を区別せずに指定された値が配列内に存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。