こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 PHPで配列から指定した値を検索し、キーを取得できるarray_search関数について
- array_search関数とは
- array_search関数を使ったサンプルプログラム
と、丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
PHPのバージョン | 8.0.3 |
XAMPPのバージョン | 8.0.3 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
array_search関数とは
array_search関数とは、配列から指定した値を検索し、最初に見つかったキーを返す関数です。
見つからなかった場合はfalseを返します。
array_search関数は使い方が
- パターン1:オプションを指定しない場合
- パターン2:オプションを指定した場合
の合計2パターンあります。
それぞれ解説します。
パターン1:オプションを指定しない場合
オプションを指定しない場合、第一引数の文字列の第二引数の配列から値のみ一致するか?という観点で検索します。
つまり、厳密に検索しません。
使い方サンプルは以下です。
1 2 |
$sample = [1, 2, 3, 4]; $result = array_search('3', $sample); |
上記だと、array_search関数の第一引数に指定した「3」と一致する値を検索します。
配列には型は異なりますが値は同じ数値の「3」が存在するため、resultには2が返ります。
パターン2:オプションを指定した場合
オプションを指定する場合、第一引数の文字列の第二引数の配列から値も型も一致するか?という観点で検索します。
つまり、厳密に検索します。
使い方サンプルは以下です。
1 2 |
$sample = [1, 2, 3, 4]; $result = array_search('3', $sample, true); |
上記だと、第一引数に指定したのは文字の「3」と一致する値を検索します。
配列には数値の「3」で値は同じであるものの、型が異なるため、resultにはfalseが返ります。
第三引数に指定するbool値の意味は下記の通りです。
trueを指定 | 型と値が一致している場合のみ、キーを返す |
---|---|
falseを場合 | 値が一致していれば、キーを返す 型は異なっていても良い |
第三引数を指定しなかった場合のデフォルト値はfalseです。
では、次の章で実際に使ってみます。
array_search関数を解説するプログラムの概要
array_search関数を解説するプログラムでは
- オプションを設定しない
- オプションを設定する
- 連想配列で実施する
の3パターンでarray_search関数で配列から値を検索し、結果を表示させます。
phpプログラムは
C:\xampp\htdocs
配下に、【array_search_sample.php】というファイル名で格納しています。
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 34 35 36 37 38 39 40 41 42 |
<?php // パターン1:オプションを設定しない print('■パターン1:オプションを設定しない<br >'); $numbers_no_option = array(1, 2, 3, 4, 5); var_dump($numbers_no_option); print('<br ><br >'); $number_no_option_idx = array_search('2', $numbers_no_option); if($number_no_option_idx != false) { print('["2"]という値は存在し、キーは'.$number_no_option_idx); } else { print('["2"]という値は存在しません。'); } print('<br ><br >'); // パターン2:オプションを設定する print('■パターン2:オプションを設定する<br >'); $numbers_option = array(6, 7, 8, 9); var_dump($numbers_option); print('<br ><br >'); $number_option_idx = array_search('8', $numbers_option, true); if($number_option_idx != false) { print('["8"]という値は存在し、キーは'.$number_option_idx); } else { print('["8"]という値は存在しません。'); } print('<br ><br >'); // パターン3:連想配列で実施する print('■パターン3:連想配列で実施する<br >'); $vegetables = array('cabbage' => 'キャベツ', 'tomato' => 'トマト', 'carrot' => 'ニンジン'); var_dump($vegetables); print('<br ><br >'); $vegetable_idx = array_search('キャベツ', $vegetables); if($vegetable_idx != false) { print('[キャベツ]という値は存在し、キーは'.$vegetable_idx); } else { print('[cabbage]というキーは存在しません。'); } ?> |
実行結果
XAMPPを起動して、【http://localhost/array_search_sample.php】のURLにアクセスします。
XAMPPでPHPの動かし方については、こちらの記事をご参考ください。
第三引数に指定した値によって、取得できたりできないことが確認できました!
まとめ:array_search関数を使ってみよう!
以上がarray_search関数についての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント