0

括弧が違いを生むのか、それとも何か間違っているのかわかりません! これが偶然遭遇した状況です..

 print (FALSE or TRUE);     //prints '1'
 print FALSE or TRUE;       //prints nothing

FALSE or TRUEが に評価されることはわかっていTRUEますが、驚くべきことに、印刷TRUEは括弧の影響を受けません!

  print (TRUE);     //prints '1'
  print TRUE;       //prints '1'

マニュアルには、括弧の使用は必須ではないことが明確に記載されています。以下は説明書からの引用です..

print は実際には実際の関数ではありません (これは言語構造です) ので、引数リストに括弧を使用する必要はありません。

私が知りたいこと..

  • バグですか?
  • バグでない場合、括弧は出力にどのように影響しますか?
  • 括弧を使用するか、括弧を省略すると、どの方法で期待される出力が得られますか?

Windows 8 で PHP バージョン 5.4.7 を使用しています。

ありがとう!

4

2 に答える 2

0

この背後にある理由は、演算子の優先順位です: http://php.net/manual/en/language.operators.precedence.php

printよりも優先順位の高い代入演算子と同じ演算子の優先順位を持つように見えますor

同じ例を試してみたが、||代わりにor

print FALSE || TRUE; //1

||代入演算子よりも優先順位が高いため、出力される値は 1 になります。

それが理にかなっていることを願っています。

于 2013-06-29T15:34:03.247 に答える