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件)です。


