【PHP】in_array関数で値が配列に存在するか確認する方法を解説!
in_array関数は配列の値をチェックする関数です。
ですが、第三引数を指定しないと、数値型を格納している配列で文字列型で同じ値を検索してもtrueを返しますので注意が必要です。
ここでは、in_array関数を使って配列の値ををチェックする方法をわかりやすく解説していきます。
目次
in_array関数の書き方
in_array関数は以下のようになります。
1 2 3 |
<?php in_array($検索する文字列, $配列, $タイプ) ?> |
パラメータ
・ $検索する文字列(必須): 索対象を指定します
・ $配列(必須): 検索する配列を指定します
・ $タイプ: このパラメーターがtrueに設定されている場合、in_array()関数は配列内の検索文字列と特定のタイプを検索します。
戻り値
値が配列で見つかった場合はtrueを返し、それ以外の場合はfalseを返します。
in_array関数の使い方
冒頭でも言いましたが、in_array()関数は、指定された値が配列に存在するかどうかを確認するために使用されます。
指定された値が指定された配列で見つかった場合はtrueを返し、そうでない場合はfalseを返します。
検索パラメーターが文字列で、$タイプがtrueに設定されている場合、検索では大文字と小文字が区別されます。
値をチェックするサンプル
サンプルコードで配列の中にある値をチェックしてみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php $name = array("太郎", "次郎", "一郎"); if (in_array("太郎", $name, true)) { echo "太郎は見つかりました。 \n"; } else { echo "太郎は見つかりません。 \n"; } if (in_array(87, $name, true)) { echo "次郎は見つかりました。 \n"; } else { echo "次郎見つかりません。 \n"; } if (in_array("三郎", $name, true) { echo "三郎は見つかりました \n"; } else { echo "三郎は見つかりません。 \n"; } ?> |
出力結果
太郎は見つかりました。
次郎見つかりました。
三郎は見つかりません。
太郎、次郎は見つかるのでtrueを返しますが、三郎は見つからない為、falseを返します。
型と値をチェックするサンプル
配列の値をチェックするのに便利なin_array関数ですが、注意点があります。
それは、数字の文字列と数値が同じである場合で検索するとtrueを返すということです。
このようなことを防ぐため、検索する値の型まで厳密に検索したい場合、第三引数にtrueを指定する必要があります。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php $name = array("太郎", "次郎", "一郎", "77"); if (in_array("太郎", $name, true)) { echo "太郎は見つかりました。 \n"; } else { echo "太郎は見つかりません。 \n"; } if (in_array(87, $name, true)) { echo "次郎は見つかりました。 \n"; } else { echo "次郎見つかりません。 \n"; } if (in_array(77, $name, true) { echo "77は見つかりました \n"; } else { echo "77は見つかりません。 \n"; } ?> |
出力結果
太郎は見つかりました。
次郎見つかりました。
77は見つかりません。
in_array関数で第3引数($タイプ)を指定した場合としない場合
第3引数を指定した場合としない場合を比較してみます。
第3引数($タイプ)を指定しない場合のサンプル
第3引数($タイプ)を指定しない場合のサンプルコードを見てみましょう。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php $name = array("87", "99", 112, 77); if (in_array("87", $name)) { echo "87は見つかりました。 \n"; } else { echo "87は見つかりません。 \n"; } if (in_array(99, $name)) { echo "99は見つかりました。 \n"; } else { echo "99見つかりません。 \n"; } if (in_array(77, $name) { echo "77は見つかりました \n"; } else { echo "77は見つかりません。 \n"; } ?> |
出力結果
87は見つかりました。
99見つかりました。
77は見つかりました。
77の「数値型」を配列に格納していますが、検索しているのは77の「文字列型」です。
型が異なるので、falseを返すべきですが、trueを返しています。
第3引数($タイプ)を指定した場合のサンプル
第3引数($タイプ)を「true」に指定してみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php $name = array("87", "99", 112, 77); if (in_array("87", $name, true)) { echo "87は見つかりました。 \n"; } else { echo "87は見つかりません。 \n"; } if (in_array(99, $name, true)) { echo "99は見つかりました。 \n"; } else { echo "99見つかりません。 \n"; } if (in_array(77, $name, true) { echo "77は見つかりました \n"; } else { echo "77は見つかりません。 \n"; } ?> |
出力結果
89は見つかりました。
99は見つかりました。
77は見つかりません。
77の「数値型」を配列に格納していますが、検索しているのは77の「文字列型」です。
型が異なるので、falseを返しています。
型関係なくチェックしたいなら、trueは指定しなくても良いですが、型もチェックしたいならtrueを指定しましょう。
in_array関数はどのような時に使えるか
in_array関数は配列の中に指定した値によって処理を変えたい場合に使用することができます。
例えば、WordPressでカテゴリーを取得し、「A」というカテゴリー名を含んでいるのであれば、「A」を、「B
」というカテゴリー名を含んでいるのであれば、「B」を画面に表示するように、取得するカテゴリーによって処理を変えることができます。
つまり、何かしらで取得したものを配列化し、配列の中から自分が指定した値があるかどうかをチェックして処理を行う際にin_array関数が役に立ちます。
参考: Sossyの助太刀ブログさんの【PHP】in_array()で配列に値があるかチェックする!より
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。