ホームページ  >  記事  >  バックエンド開発  >  PHPの配列に特定の値が存在するかどうかを確認する方法

PHPの配列に特定の値が存在するかどうかを確認する方法

PHPz
PHPzオリジナル
2023-04-26 09:10:46623ブラウズ

PHP は、Web 開発で広く使用されているプログラミング言語として、配列などのさまざまなデータ型を処理するための豊富な関数とメソッドを提供します。配列を使用する場合、配列内に特定の値が存在するかどうかを確認することが一般的な要件です。では、この関数を PHP で実装するにはどうすればよいでしょうか?この記事では、一般的に使用されるいくつかの方法を紹介します。

in_array() 関数

PHP には、配列内に値が存在するかどうかを簡単に判断できる in_array() 関数が用意されています。この関数のプロトタイプは次のとおりです:

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

このうち、$needle は検索対象の値、$haystack は検索対象の配列、$strict は strict モードを使用するかどうかを表します。間違い。値が見つかった場合は true を返し、それ以外の場合は false を返します。

たとえば、内容 ["apple", "banana", "pineapple", "orange"] を含む配列 $fruits があります。値 "banana" がその中に存在するかどうかを確認するには、次のようにします。 in_array () 関数を使用できる場合、コードは次のとおりです。

$fruits = array("apple", "banana", "pineapple", "orange");
if (in_array("banana", $fruits)) {
    echo "该值已存在于数组中";
} else {
    echo "该值不存在于数组中";
}

上記のコードからわかるように、値「banana」が存在する場合、「値はすでに配列に存在します」と出力されます。それ以外の場合は、「配列に値が存在しません」と出力されます。

in_array() 関数はデフォルトで非厳密モードを使用することに注意してください。つまり、検索された値が配列内の要素のデータ型と一致しない場合も、存在すると考えられる。 strict モードを使用する場合は、$strict パラメータを true に設定する必要があります。例:

$numbers = array(1, 2, 3, "4");
if (in_array("4", $numbers, true)) {
    echo "该值已存在于数组中";
} else {
    echo "该值不存在于数组中";
}

上記のコードからわかるように、配列内に値 4 の要素がありますが、これは文字列型であり、検索される値は数値型であるため、厳密モードではありません。以下のものは存在しないものとみなされます。 $strict パラメータを true に設定すると、strict モードで検索され、「配列に値が存在しません」と出力されます。

array_search() 関数

in_array() 関数と同様に、PHP には、配列内の値を検索し、その値の添字を返すことができる別の関数 array_search() も提供されています。この関数のプロトタイプは次のとおりです:

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )

このうち、$needle は検索対象の値、$haystack は検索対象の配列、$strict は strict モードを使用するかどうかを表します。間違い。値が見つかった場合は、値が存在する添え字が返され、それ以外の場合は false が返されます。

たとえば、内容 [1, 2, 3, 4, 5] を持つ配列 $numbers があるとします。ここで、値が 4 の要素があるかどうかを調べ、次の添字を出力します。 array_search() 関数を使用すると、コードは次のようになります:

$numbers = array(1, 2, 3, 4, 5);
if (($key = array_search(4, $numbers)) !== false) {
    echo "该值存在于数组中,其下标为" . $key;
} else {
    echo "该值不存在于数组中";
}

上記のコードからわかるように、値 4 の要素が見つかった場合、「この値は配列であり、その添え字が 3 である場合、それ以外の場合は、「値が配列に存在しません」と出力されます。

array_search() 関数は検索に非厳密モードも使用することにも注意してください。 strict モードを使用する場合は、$strict パラメータを true に設定する必要があります。例:

$numbers = array(1, 2, 3, "4", 5);
if (($key = array_search("4", $numbers, true)) !== false) {
    echo "该值存在于数组中,其下标为" . $key;
} else {
    echo "该值不存在于数组中";
}

上記のコードからわかるように、非厳密モードでは、値「4」を持つ要素を検索し、「この値は配列内に存在し、その添え字は次のとおりです」と出力します。 3」。 strict モードでは、検索対象の値が文字列型であり、配列内の要素の値が数値型で一致しないため、「配列に値が存在しません」と出力されます。

isset() 関数と array_key_exists() 関数

上記の 2 つの関数に加えて、isset() 関数と array_key_exists() 関数を使用して、キーまたはサブスクリプトが存在するかどうかを確認することもできます。配列 。

isset() 関数は、変数が設定されているかどうか、null ではないかどうかを検出できます。変数が設定されており、null でない場合は true を返し、それ以外の場合は false を返します。配列にキーが存在するかどうかを確認する場合は、 isset() 関数を使用できます。例:

$person = array("name" => "Tom", "age" => 20);
if (isset($person["name"])) {
    echo "该键存在于数组中";
} else {
    echo "该键不存在于数组中";
}

上記のコードからわかるように、キー「name」を持つ要素がある場合は「キーは配列内に存在します」と出力され、それ以外の場合は「キーが配列に存在しません。」

isset() 関数が存在しない配列要素を検出すると、警告をスローせずに false を返すことに注意してください。例:

$numbers = array(1, 2, 3, 4, 5);
if (isset($numbers[5])) {
    echo "该下标存在于数组中";
} else {
    echo "该下标不存在于数组中";
}

上記のコードから分かるように、添字5の要素は配列内に存在しないため、「配列内に添字が存在しません」と出力されます。

isset() 関数と同様に、array_key_exists() 関数も配列内にキーが存在するかどうかを検出できます。この関数のプロトタイプは次のとおりです。

bool array_key_exists ( mixed $key , array $array )

このうち、$key は検索対象のキー、$array は検索対象の配列を表します。キーが見つかった場合は true を返し、それ以外の場合は false を返します。

たとえば、["name" => "Tom", "age" => 20] という内容を持つ配列 $person があるとします。次に、 key "name" を入力し、それが存在するかどうかを出力するには、array_key_exists() 関数を使用できます。コードは次のとおりです:

$person = array("name" => "Tom", "age" => 20);
if (array_key_exists("name", $person)) {
    echo "该键存在于数组中";
} else {
    echo "该键不存在于数组中";
}

上記のコードからわかるように、要素がある場合は、キーが「name」の場合、「キーは配列に存在します」と出力され、それ以外の場合は、「キーは配列に存在しません」と出力されます。

結論

つまり、配列内に特定の値またはキーが存在するかどうかを判断することは、PHP では一般的な操作であり、実装も簡単です。上記で紹介した方法以外にも、この機能を実現できる機能や方法は数多くあります。使用する場合は、実際の状況に応じて最適な方法を選択して、プログラムの効率と可読性を向上させることができます。

以上がPHPの配列に特定の値が存在するかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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