Pol*_*ino 2 php string integer casting
这听起来很奇怪:
$test_1 = 'string';
$test_2 = '0';
var_dump(intval($test_1)); // Output: int 0
var_dump(intval($test_2)); // Output: int 0
$can_cast = intval($test_2) ? 'sure' : 'nope'; // Wrong!!!
Run Code Online (Sandbox Code Playgroud)
所以用string
to int
转换intval
返回0.精细,但它返回0也当字符串实际上可以被铸造到零(因为是零),从而有效.
如何区分两者(允许'0'作为字符串和拒绝'字符串')?
编辑:好吧,让我说我知道我可以使用is_numeric
.But is_numeric('2.3')
返回true
,所以它无能为力.和:
$test = '0';
var_dump(is_numeric($test) && intval($test)); // Fail!!!
Run Code Online (Sandbox Code Playgroud)
你可以ctype_digit
在演出之前做一个检查(如果你只想要正数).或者,您可以使用filter_var
和进行整数验证FILTER_VALIDATE_INT
.整数验证还将检查整数语义,即它将确保整数在允许的范围内.您还可以通过多种选项根据需要对其进行自定义.
归档时间: |
|
查看次数: |
12577 次 |
最近记录: |