您将如何解释php赋值语句?

时间:2018-12-08 17:43:08

标签: php

我在网上找到了一个示例php赋值语句,它可能类似于三级条件压缩语句,但不完全相同。有人对如何阅读这份作业说明有见识吗?

$access = $access || $note->uid == $user->uid && user_access('note resource view own notes');

我的第一个猜测是“分配访问权限,或者如果为空,则uid值是否相等并返回user_access。但是我觉得这是不正确的,因为这似乎是不合逻辑的。

2 个答案:

答案 0 :(得分:1)

我已经在库中找到了这种确切类型的语句,这基本上是一个精心设计的(或者只是样式不好的?)null-check。因为PHP使用短路评估,所以如果左侧的表达式为null,则or表达式的右侧将不进行评估。

答案 1 :(得分:1)

首先看看Operator Precedence

==&&之前||=之前

因此,通过添加以下括号可以使您的陈述更加清楚:

$access = (
    $access 
    || 
    ( 
        ($note->uid == $user->uid) 
        &&
        user_access('note') 
    ) 
);
  

分配访问权限,如果有访问权限,则为空,

不太准确:如果$access已经evaluates to truetrue$accesstrue,{{1} }等),或

  

uid值是否相等并与user_access的返回有关

正确

然后分配1。在此语句之后,"some string"始终是false$access,即使之前是true

注意*:false$access === 'yes'是布尔运算符,只能“返回” ||&&