2016-07-31 17 views
5

'と' PHP演算子の動作を理解できません。ここでPHP 'と'演算子で奇妙な動作が発生する

コードされています

$condition1 = true; 
$var2 = "var2"; 
$var3 = "var3"; 

$condition2 = $condition1 and $var2 == $var3; 

if($condition2) 
    echo '$condition1 and $var2 == $var3'; 

出力:$条件1と$ var2で== $ VAR3

は、今では$var2 != $var3以来、$condition2が偽でなければならないことは明らかです。したがって、echoステートメントは実行されるべきではありませんが、それは逆です。誰がこのコードの何が間違っているか教えてください。

+1

'$ condition2 =($ condition1 == true)&&($ va2 == $ var3);' –

答えて

5

andの代わりに&&を使用してください。

andは、&&よりも優先度が低くなります。左から右への文

$condition2 = $condition1 and $var2 == $var3;

、2つのステップで実行されます。

1:$condition2 = $condition1が実行されます。すなわち$condition2は現在trueです。

2:$var2 == $var3;評価を実行しますが、変数に値を割り当てません。

3

これは演算子の優先順位の問題だと思います。代わりにこれを試してみてください:

$condition2 = ($condition1 and $var2 == $var3); 

私は問題があなたの現在のコードは次のように解釈されることをだと思う:

($condition2 = $condition1) and ($var2 == $var3) 
+2

オペレーターはhttp://php.net/manual/en/language.operators.precedence.phpをご覧ください優先順位(@ nadの代わりに '&&'を使う方法を確認します)。 – smarx

2

この $ CONDITION2 =($条件1と$ var2で==ます$ VAR3を)試してみてください。 またはこれ1台 $ condition2 =($条件1 & & $ var2 == $ var3);

関連する問題