間抜けな話なのですが、休憩ネタとしてどうぞ。
WordPress のプラグインを作っていますが、画面から入力されたオプションの値をチェックするのにハマりました。以下のようにすると 「0」を受け付けてくれないのです。
NG
if ( ! filter_var( $input['myoption'], FILTER_VALIDATE_INT ) ) {
あれ、0 は整数じゃない? ...いやそれは自然数の話だろ!みたいなことを悩んでいたのですが、これはコードが間違っているのです。
正しくは以下の通り。
Good
if ( filter_var( $input['myoption'], FILTER_VALIDATE_INT ) === FALSE ) {
なぜなら filter_var はチェック成功時にフィルタされた値の 0 を返すからです。ドキュメントはよく確認しましょうということで。