我通过POST得到输入值,其中一些可能是ID指的是其他东西,有些从0开始.当选择ID为0的东西,或者没有值的东西时,是否有类似的方法intval()返回比0失败更有帮助的东西解析?或者我能否以某种方式区分intval()失败的结果?
例:
echo intval(null); // 0
echo intval("0"); // 0
Run Code Online (Sandbox Code Playgroud)
您可以使用该filter_var()函数来确定差异:
filter_var(null, FILTER_VALIDATE_INT);
// false
filter_var('0', FILTER_VALIDATE_INT);
// int(0)
Run Code Online (Sandbox Code Playgroud)
您还可以添加标志以专门接受十六进制和八进制值,但我不建议您这样做.
顺便说一句,在变量来自的更可能的情况下$_POST,您还可以使用filter_input():
if (is_int($nr = filter_input(INPUT_POST, 'nr', FILTER_VALIDATE_INT))) {
// $nr contains an integer
}
Run Code Online (Sandbox Code Playgroud)
我is_int()在结果上使用的原因filter_input是因为什么都没有发布,null返回; 使用is_int()警卫来解决这个问题.
编辑
如果问题真的只是关于nullvs '0'你可以比较$var !== null:
if (!is_null($var)) {
// $var is definitely not null
// but it might also be an object, string, integer, float even, etc.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5617 次 |
| 最近记录: |