Php 带AND运算符的赋值语句

Php 带AND运算符的赋值语句,php,operators,Php,Operators,谁能给我解释一下下面的结构。 我在谷歌上搜索了大约两个小时,但还是不明白 public function __construct($load_complex = true) { $load_complex and $this->complex = $this->getComplex(); } 见: PHP使用智能表达式求值。如果和的任何操作数的计算结果为false,则没有理由计算其他操作数,因为结果将为false 因此,如果$load\u complex为false,则无需

谁能给我解释一下下面的结构。 我在谷歌上搜索了大约两个小时,但还是不明白

public function __construct($load_complex = true)
{
    $load_complex and $this->complex = $this->getComplex();
}
见:

PHP使用智能表达式求值。如果和的任何操作数的计算结果为false,则没有理由计算其他操作数,因为结果将为false

因此,如果
$load\u complex
为false,则无需计算
$this->complex=$this->getComplex()

这是一种变通方法,但我不建议使用它,因为它会使代码难以阅读

具体到您的示例
$this->complex=$this->getComplex()
当且仅当
$load\u complex
设置为true时。

注意:如果操作数结果中的任何一个变为“false” 回路评估意味着,语句部分将 省略了,因为不需要对其进行评估

不要像下面这行那样编写代码,因为这样可能会有逻辑性 放置表达式而不是赋值时出错 到左侧的变量

 $load_complex and $this->complex = $this->getComplex();
我已经修改了下面的条件声明,以满足您的需要

if($load_complex and $this->complex) {
     $this->getComplex();
}

它被称为“短路评估”。当您将表达式而不是将值赋给左侧的变量时,可能会出现逻辑错误。。。