・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年6月16日に投稿されました。)
PHPで配列に値があるかチェックするにはin_array()を使用します。
in_array()とは配列の要素に指定した値があるか検索する関数となります。
in_array()は基本的には2つのパラメータを指定する必要があり、見つかると「true」、見つからないと「false」を返り値としてr。
そして、3つ目のパラメータを指定すると、値と型という厳密なチェックを行うことができます。
また、in_array()は1次元配列だけでなく、多次元配列や連想配列でも使用することができます。
そのため、配列の要素次第で処理を行いたい場合は、in_array()を使用するようにしましょう。
今回はPHPのin_array()で配列や連想配列に指定した値があるかチェックする方法について紹介していきます。
in_array()とは
in_array()とは指定した値が配列の要素に存在するかどうかをチェックする関数となります。
配列にチェックする値が見つかった場合は「true」、見つからなかった場合は「false」が返り値として返されるようになります。
in_array()の書き方
in_array()の書き方は下記のようになります。
1 | <?php in_array('検索する値', '検索対象の配列'[, '型チェック']); ?> |
in_array()はパラメータを必ず2つ指定する必要があります。
しかし、最大で3つのパラメータを指定することができます。
in_array()のパラメータ
in_array()で指定するパラメータは下記のようになります。
- 検索する値(必須)
検索したい値を指定する - 検索対象の配列(必須)
検索したい配列を指定する - 型チェック(任意)
値の型までチェックするかどうかをTRUE/FALSEで指定する
(デフォルトはFALSE)
1つ目はどのような型でも良いので「検索する値」を指定します。
そして、2つ目は「検索対象の配列」をで指定します。
最後に3つ目は任意となりますが、「型チェック」を行うかどうかをTRUE/FLASEで指定します。
in_array()で配列に指定した値があるかチェックするサンプルコード
in_array()で配列に指定した値があるかチェックするサンプルコードをご紹介します。
ここでは下記の3つの場合でin_array()を使用してみます。
- 配列に指定した値が存在する場合
- 配列に指定した値が存在しない場合
- 配列に指定した値と型の違う値が存在する場合
配列に指定した値が存在する場合
配列に指定した値が存在する場合に、in_array()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の配列: '; echo "\n"; $captal1 = ['Tokyo', 'Nagoya', 'Osaka', 'Fukuoka']; var_dump($captal1); echo "\n"; echo '⚫︎ 検索する値: '; echo "\n"; $search = 'Fukuoka'; echo $search; echo "\n"; echo "\n"; echo '⚫︎ in_array()使用後: '; echo "\n"; $result = in_array($search, $captal1); var_dump($result); ?> |
実行結果
配列の中に「Fukuoka」が見つかったため、in_array()によって「true」が行われています。
配列に指定した値が存在しない場合
配列に指定した値が存在しない場合に、in_array()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の配列: '; echo "\n"; $captal1 = ['Tokyo', 'Nagoya', 'Osaka', 'Fukuoka']; var_dump($captal1); echo "\n"; echo '⚫︎ 検索する値: '; echo "\n"; $dd = 'Kyoto'; echo $dd; echo "\n"; echo "\n"; echo '⚫︎ in_array()使用後: '; echo "\n"; $ff = in_array($dd, $captal1); var_dump($ff); ?> |
実行結果
配列の中に「Kyoto」が見つからなかったため、in_array()によって「false」が行われています。
配列に指定した値と型の違う値が存在する場合
配列に指定した値と型の違う値が存在する場合に、in_array()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の配列: '; echo "\n"; $captal2 = ['Tokyo', 23, 'Osaka', 24, 'Nagoya', 16]; var_dump($captal2); echo "\n"; echo '⚫︎ 検索する値: '; echo "\n"; $dd = '24'; echo $dd; echo "\n"; echo "\n"; echo '⚫︎ in_array()使用後: '; echo "\n"; $ff = in_array($dd, $captal2); var_dump($ff); ?> |
実行結果
配列に「string型の24」はありませんが「int型の24」は存在するため、in_array()によって「true」が行われています。
in_array()で厳密なチェックを行う場合
in_array()で厳密なチェックを行う場合は、3つ目のパラメータである「型チェック」に「TRUE」指定します。
型チェックに「TRUE」を指定することで、値だけでなく型までチェックを行い、その結果から「true」か「false」を返すようになります。
⚫︎ index.php
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 | <?php echo '⚫︎ 対象の配列: '; echo "\n"; $captal3 = [2022, 03, 22, 'Japan', 'Tokyo']; var_dump($captal3); echo "\n"; echo '⚫︎ 検索する値-1: '; echo "\n"; $dd = '2022'; echo $dd; echo "\n"; echo '⚫︎ in_array()使用後-1: '; echo "\n"; $ff = in_array($dd, $captal3, TRUE); var_dump($ff); echo "\n"; echo '⚫︎ 検索する値-2: '; echo "\n"; $dd = 2022; echo $dd; echo "\n"; echo '⚫︎ in_array()使用後-2: '; echo "\n"; $ff = in_array($dd, $captal3, TRUE); var_dump($ff); ?> |
実行結果
3つ目のパラメータに「TRUE」を指定することで、値だけでなく型までチェックが入るようになっています。
そのため、整数型の「2022」だと「true」が返されますが、文字列型の「2022」だと「false」が返されています。
in_array()で多次元配列に値があるかチェックするサンプルコード
in_array()で多次元配列に値があるかチェックするサンプルコードをご紹介します。
ここでは下記の2つの場合でin_array()を使用してみます。
- 2次元配列の場合
- 3次元配列の場合
2次元配列の値をチェックする場合
2次元配列の場合にin_array()を使用してみます。
⚫︎ index.php
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 | <?php echo '⚫︎ 対象の配列: '; $captal4 = [ ['Tokyo', 'Osaka', 'Nagoya', 'Fukuoka'], ['Kanagawa', 'Kyoto'], ['Hokkaido', 'Okinawa'] ]; var_dump($captal4); echo '⚫︎ 検索する値-1: '; $dd = ['Hokkaido', 'Okinawa']; var_dump($dd); echo '⚫︎ in_array()使用後-1: '; $ff = in_array($dd, $captal4); var_dump($ff); echo '⚫︎ 検索する値-2: '; $dd = 'Kyoto'; echo $dd; echo '⚫︎ in_array()使用後-2: '; $ff = in_array($dd, $captal4[1], TRUE); var_dump($ff); ?> |
実行結果
in_array()によって、2次元配列の値をチェックすることができます。
また、配列の後ろにインデックスを1つ指定することで、2次元配列の中にある配1次元配列の値をチェックすることもできます。
3次元配列の値をチェックする場合
3次元配列の場合に、in_array()を使用してみます。
⚫︎ index.php
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 31 32 33 | <?php echo '⚫︎ 対象の配列'; echo "\n"; $captal4 = [ [['Tokyo', 'Osaka', 'Aichi', 'Fukuoka'],['Kanagawa', 'Kyoto', 'Hyogo']], [['Hokkaido', 'Okinawa'],['kawaga', 'Tokushima', 'Ehime', 'Kochi']] ]; var_dump($captal4); echo '⚫︎ 検索する値-1'; $dd = [['Tokyo', 'Osaka', 'Aichi', 'Fukuoka'],['Kanagawa', 'Kyoto', 'Hyogo']]; var_dump($dd); echo '⚫︎ in_array()使用後-1'; $ff = in_array($dd, $captal4); var_dump($ff); echo '⚫︎ 検索する値-2'; $dd = ['Hokkaido', 'Okinawa']; var_dump($dd); echo '⚫︎ in_array()使用後-2'; $ff = in_array($dd, $captal4[1]); var_dump($ff); echo '⚫︎ 検索する値-3'; $dd = 'Kochi'; var_dump($dd); echo '⚫︎ in_array()使用後-3'; $ff = in_array($dd, $captal4[1][1]); var_dump($ff); ?> |
実行結果
in_array()によって、3次元配列の値をチェックすることができます。
また、配列の後ろにインデックスを1つ指定することで、3次元配列の中にある2次元配列の値を、インデックスを2つ指定することで、3次元配列の中にある1次元配列の値をチェックすることができます。
in_array()で連想配列に指定した値があるかチェックするサンプルコード
in_array()で連想配列に指定した値があるかチェックするサンプルコードをご紹介します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php echo '⚫︎ 対象の配列'; $captal4 = [ 'Tokyo' => '東京', 'Nagoya' => '名古屋', 'Osaka' => '大阪', 'Fuuoka' => '福岡', ]; var_dump($captal4); echo '⚫︎ 検索する値'; $dd = '大阪'; var_dump($dd); echo '⚫︎ in_array()使用後'; $ff = in_array($dd, $captal4); var_dump($ff); ?> |
実行結果
in_array()によって、連想配列の値をチェックすることができます。
「大阪」という値が存在するため、「true」が返されています。
in_array()を制御文の条件式として使用する場合
in_array()を制御文の条件式として使用してみましたのでご紹介します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php echo '⚫︎ 対象の配列'; $captal1 = ['Tokyo', 'Nagoya', 'Osaka', 'Fukuoka']; echo "\n"; var_dump($captal1); echo "\n"; search("Fukuoka", $captal1); echo "\n"; echo "\n"; search("Kyoto", $captal1); function search($val1, $val2) { echo "検索した値: ".$val1; echo "\n"; if(in_array($val1, $val2)) { echo '検索した値が見つかりました。'; } else { echo '検索した値が見つかりませんでした。'; } } ?> |
実行結果
in_array()はtrueやfalseを返すため、if文の条件式として使用しています。
そのため、「Fukuoka」の場合は「検索した値が見つかりました。」というメッセージが表示され、「Kyoto」の場合は「検索した値が見つかりませんでした。」というメッセージが表示されます。
実際のサイトでin_array()を使ってみた
in_array()を実際のサイトに使ってみたので紹介します。
WordPressで作成したサイトで、各カテゴリーのページで指定した文字列を表示するような処理を行ってみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php $catarray = []; $categories = get_the_category(); foreach($categories as $category) { $cat = $category->slug; array_push($catarray,$cat); } echo '<div>'; if(in_array('sports', $catarray)) { echo '<span>'.'スポーツ一覧'.'</span>'; } if(in_array('kyugi', $cararray)) { echo '<span>'.'×'.'</span>'; echo '<span>'.'球技'.'</span>'; } if(in_array('rikujo', $catarray)) { echo '<span>'.'×'.'</span>'; echo '<span>'.'陸上'.'</span>'; } echo '</div>'; ?> |
実行結果
まず、そのページで取得したカテゴリーを配列化し、in_array()で見つかったカテゴリーの値がある場合に各々の処理が行われるようになります。
そのため、各カテゴリーページにそれぞれのカテゴリー名が表示されています。
チェックした配列の値のキーを取得する場合
チェックした配列の値のキーを取得する場合は、array_search()を使用します。
array_search()とは指定した配列の値のキーを取得する関数となります。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の配列: '; $captal1 = ['Tokyo', 'Nagoya', 'Osaka', 'Fukuoka']; var_dump($captal1); echo '⚫︎ 検索する値: '; $search = 'Fukuoka'; echo $search; echo '⚫︎ array_search()使用後: '; $result = array_search($search, $captal1); echo $result; ?> |
実行結果
array_search()によって、チェックした値のキーを取得することができます。
そのため、「Fukuoka」のキーである「3」が表示されています。
もし、array_search()について詳しく知りたい場合は下記の記事をご参考ください。
まとめ
⚫︎ in_array()とは配列の要素に指定した値があるか検索する関数である
⚫︎ in_array()のパラメータは2つ必須だが、最大3つまで指定できる
・ 検索する値(必須)
・ 検索対象の配列(必須)
・ 型チェック(任意)
⚫︎ 配列に指定した値が存在する場合にin_array()を使用すると、「true」を返す
⚫︎ 配列に指定した値が存在しない場合にin_array()を使用すると、「false」を返す
⚫︎ 配列に指定した値と型の違う値が存在する場合にin_array()をを使用すると、「true」を返す
⚫︎ in_array()で厳密な検索を行う場合は、3つ目のパラメータである「型チェック」に「TRUE」指定する
⚫︎ in_array()は多次元配列の値でもチェックすることができる
(しかし、配列のインデックスには要注意)
⚫︎ in_array()は連想配列の値でもチェックすることができる
⚫︎ in_array()を制御文の条件式として使用することができる
⚫︎ チェックしたい配列の値のキーを取得したい場合をarray_search()を使用する