Php 返回命令中或(| |)用法的确认

Php 返回命令中或(| |)用法的确认,php,Php,我在return命令中遇到了一些关于| |运算符的有趣用法,如果有人能够确切地确认发生了什么,我将不胜感激(如果我理解它,我将来可以自己使用它) 代码是 return ( empty($neededRole) || strcasecmp($role, 'admin') == 0 || strcasecmp($role, $neededRole) == 0 ); 返回( 空($neededRole)|| strcasecmp($role,'a

我在return命令中遇到了一些关于| |运算符的有趣用法,如果有人能够确切地确认发生了什么,我将不胜感激(如果我理解它,我将来可以自己使用它)

代码是

return ( empty($neededRole) || strcasecmp($role, 'admin') == 0 || strcasecmp($role, $neededRole) == 0 ); 返回( 空($neededRole)|| strcasecmp($role,'admin')==0|| strcasecmp($role,$neededRole)==0 ); $neededRole和$role为空,'admin'或'manager'

我读的是:
如果
$neededRole
为空,则无需进一步检查。返回true(并停止检查)
如果
($role==“admin”)
则允许访问,而不管所需的角色是什么。返回true(并停止检查)
如果
($role==$neededRole)
则允许访问。返回true(并停止检查)

我猜测,当到达“true”时,检查将停止,如果它到达行的末尾而没有“true”,它将默认为false


我接近目标了吗?

是的,你说得对。这就是所谓的。如果所有条件的计算结果均为false,则最终返回值将为
false | false | false
,即false

作为旁注,这也适用于
&&
运算符,但当第一个表达式产生
false
值时,它会停止计算。

是的,您是对的

请参见中的示例


忘了加上一句,如果这项技术有名字的话,我很想进一步了解它
// foo() will never get called as those operators are short-circuit
$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());