我无法理解'和'PHP运算符的行为。
以下是代码:
$condition1 = true;
$var2 = "var2";
$var3 = "var3";
$condition2 = $condition1 and $var2 == $var3;
if($condition2)
echo '$condition1 and $var2 == $var3';
输出:$ condition1和$ var2 == $ var3
现在很明显,因为$var2 != $var3
,$condition2
应该是假的。因此,echo
语句不应该被执行,而是以另一种方式发生。任何人都可以告诉我这段代码有什么问题吗?
答案 0 :(得分:4)
使用&&
代替and
。
and
的优先级低于&&
。声明
$condition2 = $condition1 and $var2 == $var3;
从左到右分两步执行。
1:执行$condition2 = $condition1
。即$condition2
现在是true
。
2:执行$var2 == $var3;
执行评估,但不为任何变量赋值。
答案 1 :(得分:2)
我认为这是运营商优先问题。试试这个:
$condition2 = ($condition1 and $var2 == $var3);
我认为问题是您当前的代码被解释为:
($condition2 = $condition1) and ($var2 == $var3)
答案 2 :(得分:2)
试试这个 $ condition2 =($ condition1和$ var2 == $ var3); 或者这个 $ condition2 =($ condition1&& $ var2 == $ var3);