php中的运算符优先级

php中的运算符优先级,php,operator-keyword,operator-precedence,Php,Operator Keyword,Operator Precedence,我们知道=的优先级低于 我的问题:如果上面的句子是真的,那么如何执行下面的if条件 function foo() { return false; } if(!$a=foo()) { echo "Yes, foo() appeared here."; } 这是作业,不是比较。此外,您还有一个函数调用,这是分配所需的。那么顺序是: 1) Function call returning false; 2) Assignment of false value to $a; 3) Neg

我们知道=的优先级低于

我的问题:如果上面的句子是真的,那么如何执行下面的if条件

function foo()
{ 
   return false;
}


if(!$a=foo())
{
  echo "Yes, foo() appeared here.";
}

这是作业,不是比较。此外,您还有一个函数调用,这是分配所需的。那么顺序是:

1) Function call returning false;
2) Assignment of false value to $a;
3) Negation of $a as !false, i.e., true.

这是作业,不是比较。此外,您还有一个函数调用,这是分配所需的。那么顺序是:

1) Function call returning false;
2) Assignment of false value to $a;
3) Negation of $a as !false, i.e., true.

运算符不仅具有优先级,还具有、和!是右关联的,而=是左关联的。如果输入错误,请更改$a=foo to if$a==foo我不确定我是否理解这个问题,您所说的如何执行以下操作是什么意思…?-逻辑已经足够好了,if条件是:if$a不为true,然后从:Note:中输入quote,虽然=的优先级低于大多数其他运算符,但PHP仍然允许类似以下表达式:if$a=foo,在这种情况下,foo的返回值被放入$a@Epodax,我想OP想知道事情是怎么发生的。至少我希望如此,因为我在回答中把重点放在了这一点上!LOL运算符不仅具有优先级,还具有,和!是右关联的,而=是左关联的。如果输入错误,请更改$a=foo to if$a==foo我不确定我是否理解这个问题,您所说的如何执行以下操作是什么意思…?-逻辑已经足够好了,if条件是:if$a不为true,然后从:Note:中输入quote,虽然=的优先级低于大多数其他运算符,但PHP仍然允许类似以下表达式:if$a=foo,在这种情况下,foo的返回值被放入$a@Epodax,我想OP想知道事情是怎么发生的。至少我希望如此,因为我在回答中把重点放在了这一点上!英雄联盟