我通过POST获取输入值,其中一些可能是ID引用其他事物,并且某些启动为0.在选择具有ID 0的内容或没有值的其他东西时,有类似的方法intval()
,返回比0
失败更有用的方法解析?或者我可以以某种方式区分intval()
解析失败的结果吗?
例子:
echo intval(null); // 0
echo intval("0"); // 0
我通过POST获取输入值,其中一些可能是ID引用其他事物,并且某些启动为0.在选择具有ID 0的内容或没有值的其他东西时,有类似的方法intval()
,返回比0
失败更有用的方法解析?或者我可以以某种方式区分intval()
解析失败的结果吗?
例子:
echo intval(null); // 0
echo intval("0"); // 0
您可以使用该filter_var()
函数来确定差异:
filter_var(null, FILTER_VALIDATE_INT);
// false
filter_var('0', FILTER_VALIDATE_INT);
// int(0)
您还可以添加标志以专门接受十六进制和八进制值,但我不建议您这样做。
顺便说一句,在变量来自的更有可能的情况下$_POST
,您也可以使用filter_input()
:
if (is_int($nr = filter_input(INPUT_POST, 'nr', FILTER_VALIDATE_INT))) {
// $nr contains an integer
}
我is_int()
在结果上使用的原因filter_input
是因为当没有发布任何内容时,null
都会返回;使用is_int()
防护措施来解决这个问题。
编辑
如果问题真的只是null
vs'0'
你可以比较$var !== null
:
if (!is_null($var)) {
// $var is definitely not null
// but it might also be an object, string, integer, float even, etc.
}
你可以先检查它是否是一个数字:
is_numeric($val);
好的,现在去找解决方案。
preg_match('/^\d+$/','0') //is true
preg_match('/^\d+$/',NULL) //is false