PHPで配列の要素を検索する方法:array_search()

PHPでは配列をよく使用するため、配列のための関数も多数用意されています。今回は配列の要素を検索する方法を紹介します。

要素の検索:array_search()

要素を検索するには array_search() 関数を使います。array_search()は配列内に指定した値の要素が見つかった場合、見つかった要素の位置を返します。

以下は配列から20という要素ががある位置を検索した例です。

<?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を検索してみます。

<?php
$data = array(10, 5, 20, 8, 15);
$key = array_search(20, $data);
echo $key;
?>

この場合、$key には false が入ります。

要素が見つからないときの判定

要素が見つからなかった場合、falseが返されるわけですが、その判定を以下のようにしてはいけません。

if( $key == false ){
    echo "見つかりません";
}

この場合、最初の要素(0番目の要素)が見つかった場合にもif文が真となり「見つかりません」と表示されてしまいます。「==」 の判定では0とfalseは型が違っても同じと見なされます。

型も厳密に判定するには 「===」 のように = を3つ書きます。

if ( $key === false ){
    echo "見つかりません";
}

複数の該当要素がある場合

例えば以下のように5という要素がある位置を検索したとします。

<?php
$data = array(10, 5, 20, 8, 5);
$key = array_search(5, $data);
echo $key;
?>

この場合、5は2カ所にあるわけですが、最初に見つかった位置の1が返されます。

array_search()を使えば配列の要素の検索は関数を呼び出すだけでできます。ただし、要素が見つからない場合の判定は間違えやすいので要注意です。


イベント

2017/12/05(火)
Design Thinking Square