Is_numeric()
如果值为 0 ,is_int()
则返回 false。我能做些什么来验证特定值是否仅在 PHP 中是数字?
我们是直奔正则表达式阵营,还是已经有一些不错的、方便的功能呢?
谢谢!
在这两种情况下,它对我来说都是正确的:
var_dump(is_numeric(0));
var_dump(is_int(0));
结果:
bool(true)
bool(true)
零,因为整数是空的。因此,请确保在检查 Is_numeric() 或 is_int() 之前不检查空
var_dump(is_int("0"));
将传递 false 因为您将零作为字符串文字传递给它。您可以尝试传递与已通过(我相信) parseInt(""); 的变量相同的东西。
虽然我的 php 可能有点不对劲,但过去一两周一直在不停地使用 Javascript。
0
如果这实际上是一个布尔值,也会发生这种情况FALSE
。
is_numeric()
总是返回FALSE
布尔值。
我在同样的问题上苦苦挣扎,结果数字后面有一个空格。
长话短说,这个数字是多少:
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
当您处理 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 的版本。
if($price != 0) {
if(is_numeric($price)) {
$price = $price; // numeric
} else { // is not numeric }
} else {
$price = $price; // 0 as numeric
}