PHP:Is_numeric在0上返回false

时间:2010-05-05 15:15:40

标签: php regex integer numerical numeric

Is_numeric()以及is_int()如果值为0则返回false。我可以做什么来验证特定值是否只是PHP中的数字?

我们是否正在前往正规表演营地,或者那里有一些不错的,便利的功能吗?

谢谢!

7 个答案:

答案 0 :(得分:5)

在这两种情况下,我都会回归:

var_dump(is_numeric(0));
var_dump(is_int(0));

<强>结果:

bool(true)
bool(true)

答案 1 :(得分:3)

归零,因为整数是空的。 因此,在检查Is_numeric()或is_int()

之前,请确保没有检查为空

答案 2 :(得分:0)

var_dump(is_int("0"));

将传递false,因为您将零作为字符串文字传递给它。你可以尝试传递相同的东西作为一个已经通过的变量(我相信)parseInt(“”);

虽然我的php可能有些偏差,但是在过去的一两周里,Javascripting已经不停了。

答案 3 :(得分:0)

当您处理REQUEST时,最好先使用filter_input检查输入。以下是$ _GET中的'id'示例。

filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT)

完整的例子

if (is_int(filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))) {
        $id = $_GET['id'];
} else {
        die('please input a integer');
}

好吧,该功能提供了PHP&gt; = 5.2版。

答案 4 :(得分:0)

我对同样的问题感到困惑,并且发现在号码后面有一个空格。

长话短说,无论数字是多少:

is_numeric(" 0.0") --> YES
is_numeric("0.0 ") --> NO

这是一个例子......

public function getCoordinates()
{
    return sprintf('%1$f , %2$f',$this->getLatitude(),$this->getLongitude());
}

后来在这个过程中......

        $myarr = explode(",",$_ScreenCoordinates);
        echo "_ScreenCoordinates:$_ScreenCoordinates<br>";
        echo "myarr[0]:".$myarr[0]." - ".((is_numeric($myarr[0]))?"YES":"NO")."<br>";
        echo "myarr[1]:".$myarr[1]." - ".((is_numeric($myarr[1]))?"YES":"NO")."<br>";
        echo "trimmed[0]:".$myarr[0]." - ".((is_numeric(trim($myarr[0])))?"YES":"NO")."<br>";

屏幕上印刷:

Array ( [0] => 1.200000 [1] => 123.456000 )
_ScreenCoordinates:1.200000 , 123.456000
myarr[0]:*1.200000 * - NO
myarr[1]:* 123.456000* - YES
trimmed[0]:*1.200000 * - YES

答案 5 :(得分:0)

如果0实际上是布尔FALSE,也会发生这种情况。 is_numeric()始终为布尔值返回FALSE

答案 6 :(得分:0)

if($price != 0) {
    if(is_numeric($price)) {
        $price = $price; // numeric
    } else { // is not numeric }
} else {
    $price = $price; // 0 as numeric
}