先日、PHPのコードを書いていると不可解なことが起きた。
以下のコードを見てもらおう。
<?php
$arr = array(
'hoge',
'fuga',
'piyo',
);
$keyword = 'hoge';
if(array_search($keyword, $arr)) {
echo $keyword."が見つかりました!";
}
array_search関数を使って、配列からキーワードを検索するコードだ。
if文で要素が見つかったらecho文が実行されるはずなのだが、なぜか実行されない。
原因
実は先ほどのコードはif文の条件式の書き方が悪く、array_search関数は見つかった要素が配列の何番目にあるかを返すため、今回のケースだと「0」が返るのだ。
当然のことながらこれではif文の中身は実行されない。
正解
以下のように条件式を書き直す必要がある。
if(array_search($keyword, $arr) !== false) {
echo $keyword."が見つかりました!";
}
array_searchの結果、何も見つからなければfalseを返すので、正解は上記のコードとなる。