array_searchで配列の中身をチェック

array_searchで配列の中身をチェック

PHParray_searchで配列の中身をチェック

PHP5.2 で array_search を使用していて気付いたこと。
(これは PHP4 でも同じかもしれませんが)

配列に複数の文字列を入れておき、特定の文字列が配列に含まれているかをチェックしようとします。例えば、下記のようなソースの例。

$word = 'hoge1';
$pages = array('hoge1', 'hoge2', 'hoge3');

if (!array_search($word, $pages)) {
    header("HTTP/1.0 404 Not Found");
    exit;
}

このとき、配列の先頭の hoge1 を検索した場合、array_search の結果で FALSE が返ってきてしまいます。よくよく調べてみると、配列の中身に一致した場合は、キーの値を返すので、0 番目(配列の最初)の 0 は、if の条件判定で FALSE と同じように扱われてしまうことが判明。

よって、下記のように論理演算子判定をするのがベターかな。やっぱ、型が厳密に宣言できた方が混乱は少ないですね。手軽なところが PHP の良さではありますが。

if (array_search($word, $pages) === FALSE) {
    header("HTTP/1.0 404 Not Found");
    exit;
}

最終更新日:

関連記事

人気記事

新着情報