我在网上找到了一个示例php赋值语句,它可能类似于三级条件压缩语句,但不完全相同。有人对如何阅读这份作业说明有见识吗?
$access = $access || $note->uid == $user->uid && user_access('note resource view own notes');
我的第一个猜测是“分配访问权限,或者如果为空,则uid值是否相等并返回user_access。但是我觉得这是不正确的,因为这似乎是不合逻辑的。
答案 0 :(得分:1)
我已经在库中找到了这种确切类型的语句,这基本上是一个精心设计的(或者只是样式不好的?)null-check。因为PHP使用短路评估,所以如果左侧的表达式为null,则or表达式的右侧将不进行评估。
答案 1 :(得分:1)
==
在&&
之前||
在=
之前
因此,通过添加以下括号可以使您的陈述更加清楚:
$access = (
$access
||
(
($note->uid == $user->uid)
&&
user_access('note')
)
);
分配访问权限,如果有访问权限,则为空,
不太准确:如果$access
已经evaluates to true
(true
($access
,true
,{{1} }等),或
uid值是否相等并与user_access的返回有关
正确
然后分配1
。在此语句之后,"some string"
始终是false
或$access
,即使之前是true
。
注意*:false
和$access === 'yes'
是布尔运算符,只能“返回” ||
或&&