PHPでは配列をよく使用するため、配列のための関数も多数用意されています。今回は配列の要素を検索する方法を紹介します。
要素の検索:array_search()
要素を検索するには array_search() 関数を使います。array_search()は配列内に指定した値の要素が見つかった場合、見つかった要素の位置を返します。
以下は配列から20という要素ががある位置を検索した例です。
1 2 3 4 5 |
<?php $data = array(10, 5, 20, 8, 15); $key = array_search(20, $data); echo $key; ?> |
この場合、$keyには2 が入ります(先頭要素が0番目、次が1番目なので20は2番目)。
このようにarray_search関数は第1引数として探したい値、第2引数に配列そのものを渡します。
要素が見つからない場合
では、要素が見つからなかった場合にはどうなるでしょうか?
例えば、以下の例のように配列内に存在しない要素30を検索してみます。
1 2 3 4 5 |
<?php $data = array(10, 5, 20, 8, 15); $key = array_search(20, $data); echo $key; ?> |
この場合、$key には false が入ります。
要素が見つからないときの判定
要素が見つからなかった場合、falseが返されるわけですが、その判定を以下のようにしてはいけません。
1 2 3 |
if( $key == false ){ echo "見つかりません"; } |
この場合、最初の要素(0番目の要素)が見つかった場合にもif文が真となり「見つかりません」と表示されてしまいます。「==」 の判定では0とfalseは型が違っても同じと見なされます。
型も厳密に判定するには 「===」 のように = を3つ書きます。
1 2 3 |
if ( $key === false ){ echo "見つかりません"; } |
複数の該当要素がある場合
例えば以下のように5という要素がある位置を検索したとします。
1 2 3 4 5 |
<?php $data = array(10, 5, 20, 8, 5); $key = array_search(5, $data); echo $key; ?> |
この場合、5は2カ所にあるわけですが、最初に見つかった位置の1が返されます。
array_search()を使えば配列の要素の検索は関数を呼び出すだけでできます。ただし、要素が見つからない場合の判定は間違えやすいので要注意です。