我在生产中有以下代码似乎导致了无限循环。
$z=1;
while (!$apns = $this->getApns($streamContext) && $z < 11)
{
myerror_log("unable to conncect to apple. sleep for 2 seconds and try again");
$z++;
sleep(2);
}
如何应用导致此行为的优先规则?
http://php.net/manual/en/language.operators.precedence.php
我在文档中看到了这个注释:
尽管 = 的优先级低于大多数其他运算符,但 PHP 仍然允许类似于以下的表达式:if (!$a = foo()),在这种情况下,foo() 的返回值被放入 $a。
这让我认为应该首先评估 = 。然后!然后是&&,这不会导致无限循环。