带AND运算符的赋值语句

时间:2014-01-25 10:45:03

标签: php operators

任何人都可以按照构造解释我。 我用谷歌搜索大约2个小时,但无法理解。

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

2 个答案:

答案 0 :(得分:2)

请参阅:http://www.php.net/manual/en/language.operators.logical.php

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

因此,如果$load_complex为false,则无需评估$this->complex = $this->getComplex();

这是某种解决方法,但我不建议使用它,因为它会使您的代码难以阅读。

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

答案 1 :(得分:1)

<强> LIVE DEMO

  

注意:如果 OPERAND 结果中的任何一个变为“ false ”   电路 AND 评估意味着,声明部分将是    OMITTED ,因为无需对其进行评估。

不要像下面这样的代码因为,你可能会得到逻辑           在放置Expression而不是赋值时出错           到LEFT HAND SIDE的变量...

 $load_complex and $this->complex = $this->getComplex();

我已根据您的需要修改了下面的条件声明......

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