在PHP中,我可以区分intval(null)和intval(“0”)的结果吗?
发布时间:2020-12-13 17:21:35 所属栏目:PHP教程 来源:网络整理
导读:我通过POST得到输入值,其中一些可能是ID指的是其他东西,有些从0开始.当选择ID为0的东西,或者没有值的东西时,是否有类似intval()的方法返回更有帮助的东西无法解析时超过0?或者我可以以某种方式区分intval()的结果与解析失败? 例: echo intval(null); // 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 } 我在filter_input的结果上使用is_int()的原因是因为当没有发布任何内容时,返回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. } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |