function test_function (int $a){
if(!$a>0){
echo "in";
}else{
echo "out"
}
}
test_function(0);//output: in
test_function(2);//output: out
test_function(4);//output: out
我知道 PHP 自己的运算符优先级开始生效,感叹号在"大于"运算符之前进行第一次计算。没关系。
我希望PHP能在这里抛出一个错误,说"不能对整数进行布尔运算"。但无论如何,简单的解决方案是使用参数:
if(!($a>0))
这负责优先级。但是在大型代码库中,您是否有任何其他建议来防止事故发生?
!-运算符是布尔代数中的 not 运算符。PHP 努力允许动态变量实例化。
在您的情况下!$a>0
会导致"(不是$a)> 0"。第二个是!($a>0)
将谈判$a>0
的结果。
这两种方式在技术上都很好(并且可能比另一种更有意义)。如果你真的想避免不协商非整数,只需检查你得到什么:
if (is_int($a) && !($a > 0)) {
你只需要一个非常好的建模。正如其他人所指出的,负责定义IF的人只需要擅长PHP。根据那里需要实现的逻辑,这取决于编码人员是否需要分离逻辑,因为$variable>数字总是返回"真"或"假",看看 Michail Hirschler 的实现,这是一个非常好的。