11

Is_numeric()如果值为 0 ,is_int()则返回 false。我能做些什么来验证特定值是否仅在 PHP 中是数字?

我们是直奔正则表达式阵营,还是已经有一些不错的、方便的功能呢?

谢谢!

4

7 回答 7

6

在这两种情况下,它对我来说都是正确的:

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

结果:

bool(true)
bool(true)
于 2010-05-05T15:17:45.223 回答
5

零,因为整数是空的。因此,请确保在检查 Is_numeric() 或 is_int() 之前不检查空

于 2014-01-14T12:06:03.140 回答
0
var_dump(is_int("0"));

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

虽然我的 php 可能有点不对劲,但过去一两周一直在不停地使用 Javascript。

于 2010-05-05T15:24:52.727 回答
0

0如果这实际上是一个布尔值,也会发生这种情况FALSEis_numeric()总是返回FALSE布尔值。

于 2015-12-11T20:49:56.900 回答
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
于 2015-08-21T20:38:00.090 回答
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 >= 5.2 的版本。

于 2015-07-13T21:41:49.207 回答
0
if($price != 0) {
    if(is_numeric($price)) {
        $price = $price; // numeric
    } else { // is not numeric }
} else {
    $price = $price; // 0 as numeric
}
于 2017-10-02T05:46:00.533 回答