if(($slcustom48 != 0) && ($slcustom48 != NULL)) { // do something } else { // do something else }
答案 0 :(得分:3)
你的代码甚至不检查一个值是否大于0,这是你的问题,所以没有。我的回答是否定的。这不是多余的。这不对。
答案 1 :(得分:2)
首先,marcc是正确的:您的代码不会检查变量是否包含大于零的值。它只是测试变量是否为零(可以是负数,也可以是字符串或对象等)。
因此扩展了这个想法:你没有检查变量是否包含整数。 你要检查的是变量是否保持一个值,使用!= NULL。但是你在if条件下的顺序是错误的。原因如下:
要防止在错误日志中出现通知(或出现在测试服务器的屏幕上),您需要在检查其他任何内容之前检查该变量是否包含任何内容。只要返回false,PHP就会停止解释条件。这也可以使用PHP的isset()或者确实使用!= NULL来完成。
接下来,您需要确保该变量包含一个整数(如果这对您很重要,我认为这对您来说很重要)。
最后,您要检查变量的值是否大于零。所以,总结一下,这就是你所需要的:
if( isset( $slcustom48 ) && is_int( $slcustom48 ) && $slcustom48 > 0 )
{
// the variable indeed holds an integer larger than zero
}
答案 2 :(得分:1)
>>> $foo = NULL
>>> $foo != 0
false
>>> $foo == 0
true
PHP将带有NULL
值的变量视为带0
运算符的整数==
,因此NULL
检查确实是多余的。
答案 3 :(得分:1)
$slcustom48=(bool)$slcustom48; if($slcustom48) { // do something } else { // do something else }
答案 4 :(得分:0)
$slcustom48 = (int)$slcustom48;
if ($slcustom48) { // will be better and don't allow $slcustom48 be == 0.
您的测试将通过“123”传递; DROP TABLE myTable--“:)
$slcustom48 = (int)$slcustom48;
if ($slcustom48 > 0) { // even better
答案 5 :(得分:0)
Filter_var很容易做到这一点......
if (filter_var($slcustom48, FILTER_VALIDATE_INT)) {
// do your stuff here
} else {
// error out
}