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