在相同的if语句中分配变量并对其进行测试


PHP: Assign variable and test against it in same if statement?

我想这样做:

if ($field = myFunction($node, 'field') && $field['value']) {
  //do something with $field
}

PHPStorm警告$field在&&尽管它刚刚成型。这只是PHPStorm很脆弱,还是有一些原因,这实际上不应该工作?

操作符优先级。看看http://docs.php.net/manual/en/language.operators.precedence.php

应该是:

if (($field = myFunction($node, 'field')) && $field['value']) {
  //do something with $field
}

按您的期望工作。在这个例子中,PhpStorm没有发出警告

这种情况表明,如果您不能100%确定操作顺序,最好总是使用括号。想象一下,如果PhpStorm在这种情况下没有警告你,并且在你的测试中它按预期工作,会发生什么。