)在返回命令中的用法
我遇到过||的一些有趣用法 如果有人能够确切地确认发生了什么(如果我明白了,我可以在将来自己使用它)。
代码是
return ( empty($neededRole) || strcasecmp($role, 'admin') == 0 || strcasecmp($role, $neededRole) == 0 );
$ neededRole和$ role都是null,'admin'或'manager'
我正在阅读它:
如果$neededRole
为空,则不需要进一步检查。 返回true(并停止检查)
如果($role == 'admin')
则允许访问,而不管所需的角色。 返回true(并停止检查)
如果($role == $neededRole)
则允许访问。 返回true(并停止检查)
我猜测,一旦达到'真正的'检查停止,并且如果它没有'真正'到达线的末尾,它将默认为假。
我接近标记了吗?
是的,你是对的。 这被称为短路评估。 如果所有条件评估为false,则最终返回值将为false || false || false
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());
链接地址: http://www.djcxy.com/p/10087.html