fre*_*ley 25 php lazy-evaluation
我有条件声明:
if($boolean && expensiveOperation()){ ...}
Run Code Online (Sandbox Code Playgroud)
PHP是否具有惰性布尔评估,即它是否会检查$boolean以及是否为假而不执行昂贵的操作?如果是这样,我应该把我的变量放在什么顺序?
irc*_*ell 29
是的,它确实.这被称为短路评估.请参阅文档页面上的注释...
至于订单,它会根据运营商优先顺序执行检查,然后从左到右执行检查.所以:
A || B || C
Run Code Online (Sandbox Code Playgroud)
将首先评估A,然后仅在A为假时进行B评估,并且仅在A和B都为假时才评估C ...
但
A AND B || C
Run Code Online (Sandbox Code Playgroud)
将永远评估B || C,因为||有一个更高的优先级AND(不是真的&&).