2

次のコードを試して、&&とと異なります。

<?php

$keyWord =  2 and 3>4;

$symbol  =  2 &&  3>4;

echo $keyWord===$symbol ? 'equal' : 'not-equal';

出力:等しくない

なぜ?

4

3 に答える 3

9

それらは同じ優先順位を持っていません。完全に括弧で囲まれたコードは次のとおりです。

($keyWord = 2) and (3>4); // $keyWord = 2
$symbol = (2 && (3>4)); // $symbol = false

2falseは明らかに同じではないので、'not-equal'

演算子の優先順位の詳細

于 2013-02-21T05:13:39.377 に答える
3

さて、コードを少し変更して:

<?php
$keyWord =  2 and 3>4;

$symbol  =  2 &&  3>4;

var_dump($keyWord);
var_dump($symbol);
?>

次の出力を生成します。

int(2) bool(false)

Kolinkが上で指摘しているように、これはオペレーターの優先順位によるものです。

于 2013-02-21T05:15:02.363 に答える
2

論理演算子の優先順位は次のとおりです(表の一部)

left    &&  logical
left    ||  logical
left    ? :     ternary
right   = += -= *= /= .= %= &= |= ^= <<= >>= =>     assignment
left    and

あなたの場合:

case 1:

$keyWord =  2 and 3>4;

($keyWord =  2) and (3>4);

ここ$keyWord = 2

case 2:

$symbol  =  2 &&  3>4;

$symbol  =  (2 && (3>4));

ここ$symbol = false

解決策$keyWord = (2 and (3>4));および$symbol = 2 && (3>4);角かっこを使用する

参照:http://php.net/manual/en/language.operators.precedence.php

于 2013-02-21T05:20:57.713 に答える