PHP'和'运算符的奇怪行为

时间:2016-07-31 06:44:52

标签: php

我无法理解'和'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语句不应该被执行,而是以另一种方式发生。任何人都可以告诉我这段代码有什么问题吗?

3 个答案:

答案 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);