数値のValidate
下記のような実装が多いけど、trueが与えられてtrueを返すのはあまり好きじゃない。
<?php function isInt($value) { return !!preg_match('/^-?[0-9]+$/', $value); } var_dump(isInt(1)); #=> bool(true) var_dump(isInt('1')); #=> bool(true) var_dump(isInt((float)1)); #=> bool(true) var_dump(isInt(true)); #=> bool(true)
こうしたほうが良いと思うんだけど、何かやらない方が都合良かったりするのかな?
<?php function isInt($value) { if(is_integer($value) || is_float($value) || is_string($value)) { return !!preg_match('/^-?[0-9]+$/', $value); #または return ctype_digit((string)$value); } return false; } var_dump(isInt(1)); #=> bool(true) var_dump(isInt('1')); #=> bool(true) var_dump(isInt((float)1)); #=> bool(true) var_dump(isInt(true)); #=> bool(false)