PHPのarray_search()は、ある値が配列の要素に含まれているかチェックする場合に非常に便利な関数です。
ただし、ひとつ落とし穴があります。
この関数の戻り値は、指定した値が配列の要素に含まれていればそのインデックス値を、含まれていなければFALSEということになっています。
つまり、戻り値が0の場合は「指定された値が添字0の要素として含まれている」であり、FALSEの場合は「指定された値は配列の要素に含まれていない」で全く異なる意味を持ちます。このことを明確に判別するようなコーディングをしないと思わぬ誤動作を引き起こします。
さらに、この「指定された値は配列の要素に含まれていない」を表す戻り値はPHP4.1以前ではNULLだったので、下位互換性を重視するならこれも考慮する必要があります。
参考
- PHP: array_search – Manual
- コラセプタ スタッフブログ » 【PHP】array_searchについて
- コラセプタ スタッフブログ » 【PHP】array_searchについて続編