是否有任何内置函数来检查值是否为数字,在任何整数类型中,如int,float但不是string。 对于" 2",is_numeric返回true。我应该通过is_int和is_float检查吗?
我想要的功能应该返回"无效值"当$ a和$ b不是数字时:
function myFunction($a, $b, $sign){}
答案 0 :(得分:2)
这不是本身的答案,但这太过于无法发表评论:
function isFloatOrInt($var)
{
$type = gettype($var);
switch ($type) {
case 'integer':
case 'double':
return true;
case 'string':
//check for number embedded in strings "1" "0.12"
return preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $var);
default:
return false;
}
如果您认为数字的字符串版本仍然是数字,那么Preg匹配在此处很有用。
你说
但不是字符串
但这是否意味着此'string'
或此'10'
代替10
,例如。一个也是数字的字符串?
可能有很多方法可以做到这一点,但有一些优势,所以它在很大程度上取决于您的需求。例如octet
一个数字0777
或指数12e4
甚至十六进制0xf4c3b00c
?
答案 1 :(得分:1)
is_numeric($value) && !is_string($value)
这就是我要找的东西