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

サラトガIT日記 > PHP > array_searchで配列の中身をチェック array_searchで配列の中身をチェック

※実経験の記憶を頼りに自宅の PC 環境(VMWareなど)で再現している内容もあるのでご注意下さい

2008-05-11

 

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;
}

関連記事

上記の記事に関連する記事(最新の10件)です。