PHPには、配列の中に指定した値が存在するかを調べるための便利な関数があります。
この記事ではin_array関数の
- in_array関数の基本的な使い方
- in_array関数を判定文で使用する方法
といった基本的な内容から、
- チェックする値の型まで確認する方法
- チェックする値を配列で指定する方法
- in_array関数の処理パフォーマンス
などのin_array関数の応用的な使い方に関しても解説していきます。
ここではそんなin_array関数について詳しく解説いたします!
in_array関数とは
配列に指定した値が存在するか、確認するためにはin_array関数を使用します。
in_array関数は以下のように記述します。
書き方:
bool in_array ( $値 , $配列 [, bool $strict = FALSE ] )
引数:
第一引数には、検索する値を指定し、第二引数には対象の配列を指定します。
第三引数にTRUEを指定した場合は、検索する値の型まで厳密に検査します。
つまり第三引数を指定すると、文字列型の数字と整数値の数字を比較した場合、型が異なるのでfalseになります。
返り値:
対象の配列に検索する値が見つかったら「TRUE」を、それ以外の場合は「FALSE」を返します。
in_array関数の使い方
ここではin_array関数の使い方について見ていきましょう!
以下に指定した値が配列に存在するか、in_array関数を使用して確認するサンプルを紹介します。
$fruits = [ 'apple', 'orange', 'melon', 'banana', 'pineapple']; //配列の中に指定した値が存在するか var_dump(in_array('orange', $fruits)); var_dump(in_array('strawberry', $fruits));
実行結果:
bool(true) bool(false)
1回目のin_arrayでは配列の中に存在している’orange’を指定しているため、TRUEを返します。
2回目のin_arrayでは配列の中に存在していない’strawberry’を指定しているため、FALSEを返します。
また、in_array関数は返り値にboolean型の値を返すため、if文などの判定で分岐処理を行いたいときに使用することもできます。
以下にif文でin_array関数を使用して、処理を分岐するサンプルを紹介します。
//配列を作成 $fruits = [ 'apple', 'orange', 'melon', 'banana', 'pineapple']; //存在チェック if (in_array('orange', $fruits)){ echo 'orangeは存在します<br>'; } if (!in_array('strawberry', $fruits)){ echo 'strawberryは存在しません'; }
実行結果:
orangeは存在します strawberryは存在しません
in_array関数については以下の記事でも解説していますので、ぜひ参考にしてくださいね!
in_array関数を使用した判定文や、結果をfunctionでの戻り値として使用する方法などの、より具体的な活用方法については、以下の記事で詳しく解説しています!
チェックする値の型まで確認する
配列の値をチェックするのに便利なin_array関数ですが、注意点もあります。
例えば数値型を格納している配列で、文字列型で同じ値を検索しても、in_array関数はTRUEを返します。
そのため、検索する値の型まで厳密に検査する場合は、第三引数をTRUEを指定する必要があります。
また、in_array関数は大文字小文字も厳密に区別しますので注意が必要です。
$array = [null, false, '10', 20, 'Apple', ]; in_array(null, $array); //true in_array(false, $array); //true in_array(10, $array); //true in_array('20', $array); //true in_array('apple', $array); //false in_array(null, $array, true); //true in_array(false, $array, true); //true in_array(10, $array, true); //false in_array('20', $array, true); //false in_array('apple', $array, true); //false
in_array関数で正確にチェックを行いたい場合は、第三引数のstrictをTRUEを指定することをオススメします。
チェックする値を配列で指定する
多次元配列の場合で指定した配列が存在するか、チェックを行いたい場合は、第一引数の検索する値に配列を指定することもできます。
以下に多次元配列の中に指定した値が格納された配列が存在するか?チェックするサンプルを紹介します。
//配列を作成 $fruits = array( array('apple', 'orange'), array('melon', 'banana'), 'pineapple'); //値をチェックする配列を作成 $array1 = ['apple', 'orange']; $array2 = ['melon', 'orange']; //配列の中に指定した値が存在するか var_dump(in_array($array1, $fruits)); var_dump(in_array($array2, $fruits));
実行結果:
bool(true) bool(false)
in_arrayのパフォーマンス
in_array関数は、配列の中の特定の値を検索するのに便利な関数ですが、速度面ではどうなのでしょうか?
以下の記事では、in_array関数と使い方が似ているarray_serch関数の処理パフォーマンスを比較していますので、気になった方はぜひ確認してみてください!
指定した値のキーを返す(array_search)
ここでは、in_array関数と似た機能であるarray_search関数について紹介します。
array_search関数は、指定した値が存在した場合にその値のキーを返します。
書き方:
array_search($値, $配列名 [, bool $strict = FALSE ])
引数:
第一引数には、検索する値を指定し、第二引数には対象の配列を指定します。
第三引数にTRUEを指定した場合は、検索する値の型まで厳密に検査します。
返り値:
対象の配列に検索する値が見つかったらキーを返します。
それ以外の場合はFALSEを返します。
以下にarray_search関数で対象の値を検索し、キーを返すサンプルを紹介します。
$fruits = [ 'item1' =>'apple', 'item2' =>'orange', 'item3' =>'melon' ]; $key = array_search('orange', $fruits); echo $key;
実行結果:
item2
上記のようにarray_searchの第一引数で指定した値が配列に存在した場合は、その値のキーを取得できることがわかりますね!
配列についてもっと知りたい方へ
以下の記事では、
- array_sum関数の使い方
- array_unique関数の使い方
- array_values関数の使い方
- array_keys関数の使い方
- array_filter関数の使い方
- array_map関数の使い方
- array_push関数の使い方
- array_key_exists関数の使い方
- array_pad関数の使い方
- implode関数の使い方
- 配列の削除方法
- 配列の検索方法
- よく使用する配列操作
など、よく使用する配列の関数をまとめて紹介していますので、配列で使用する関数を一通り知りたい方は、ぜひご覧になってください!
PHPについてもっと知りたい方へ
いかがでしたでしょうか?
PHPではin_array関数を使用して簡単に値を検索することがわかりましたね!
「PHPについて実はいまいちわかっていない・・・」
「もっとPHPについて詳しく知りたい!」
と思っている方は以下の記事も参考にしてみてください!
まとめ
ここでは配列の中から指定した値をチェックするin_array関数について、
- in_array関数の基本的な使い方
- in_array関数を判定文で使用する方法
- チェックする値の型まで確認する方法
- チェックする値を配列で指定する方法
- in_array関数の処理パフォーマンス
などについて解説しました。
また、in_array関数と処理が良く似たarray_search関数についても解説しました。
in_array関数は配列の要素から指定した値が存在するか、確認するのに非常に便利ですのでこの機会にぜひ覚えておきましょう。
もしin_array関数の使い方を忘れてしまったら、この記事を参考にしてくださいね!