2

if(!($whatever && what()) do_stuff...

这可以用更直观的东西代替,比如:

if(not($whatever && what()) do_stuff...

?

4

5 回答 5

4
function not($OriginalCheck)
{
    return !$OriginalCheck;
}

function is($OriginalCheck)
{
    return !!$OriginalCheck;
}

应该这样做:)

有几种写检查的方法:

  • if(!($whatever && what()) do_stuff...
  • if(!$whatever || !what()) do_stuff...
  • if(($whatever && what()) === false) do_stuff...
  • if((!$whatever || !what()) === true) do_stuff...
  • if($whatever === false || what() === false) === true) do_stuff...

所有这些方式都是直观的,并且在整个编程世界中都是众所周知的。

于 2011-02-06T12:07:07.323 回答
2

不,它不能。有关逻辑运算符的语言参考,请参阅http://www.php.net/manual/en/language.operators.logical.php,并导航以查找其他别名。

但是请注意, and 的优先级&&||andand不同or

于 2011-02-06T12:07:44.617 回答
1

一种选择是使布尔表达式更明确:

if(($whatever && what()) == false) // do_stuff...

或者,通过实现自定义not()

function not($expr) {
    return $expr == false;
}

if(not($whatever && what())) // do_stuff...
于 2011-02-06T12:06:51.890 回答
1

其实我也不喜欢!接线员。虽然每个开发者都能理解,但每次阅读代码都花了我一点时间。所以我更喜欢不使用!运算符。但这也取决于。

对于 php 内置函数,我为 not 运算符创建了几乎所有的辅助函数。

https://github.com/vuvanly/not-operators-helpers

于 2021-11-03T14:14:21.063 回答
0

没有其他选择!,但可以写得不那么直观:

if ($whatever - 1) {
}

应该是问题原因!容易被忽视,但not更明显;那么另一个替代符号是:

if (!!! $whatever) {

如果这看起来仍然很简单,只需使用:

if (~$whatever & 1) {

二元运算总是看起来很专业;)

于 2011-02-06T12:09:10.557 回答