5

重複の可能性:
演算子としての「AND」と「&&」

非常に基本的な質問で申し訳ありませんが、ちょうど 1 週間前に PHP の学習を開始しましたが、google/stackoverflow でこの質問に対する答えが見つかりませんでした。

以下のプログラムを実行しました:

$one = true;
$two = null;
$a = isset($one) && isset($two);
$b = isset($one) and isset($two);

echo $a.'<br>';
echo $b;

その出力は次のとおりです。

false
true

&&/and は同じです。両方の結果はどのように異なりますか?誰か本当の理由を教えてください。

4

3 に答える 3

15

その理由は、演算子の優先順位です。&を使用&&した3 つの演算子のうち、優先順位は次のとおりです。and=

  • &&
  • =
  • and

したがって$a、プログラムでは期待どおりに計算されましたが$b、ステートメント$b = isset($one)が最初に計算され、予期しない結果が得られました。以下のように修正できます。

$b = (isset($one) and isset($two));
于 2012-09-04T17:30:02.170 に答える
1

これが、演算子のグループ化が行われる方法です

$one = true;
$two = null;
$a = (isset($one) && isset($two));
($b = isset($one)) and isset($two);

echo $a.'<br>';
echo $b;

そのため、最初に false を返し、2 番目に true を返します。

于 2012-09-04T17:31:06.010 に答える
0

参照してください: http://www.php.net/manual/en/language.operators.logical.php

「and」は「&&」とは操作の順番が違うということを説明しています。その場合、代入が最初に行われます。したがって、次のことを行う場合:

$b = (isset($one) and isset($two));

期待どおりの結果が得られます。

于 2012-09-04T17:30:03.757 に答える