2

以下は奇妙なものです、私は得られませんでした

if (print("foo") || print("bar")) {
  // "foo" has been printed.
}

なぜ出力が1?

説明していただけますか?

4

1 に答える 1

5

PHPはばかげた言語だからです。printこれは通常の関数ではなく、言語構造です。この行は実際には次のように解析されます。

if (print (("foo") || print("bar")))

そして("foo") || print("bar")、に評価される式1です。ブールコンテキストの文字列"foo"はtrueであるため、||演算子はを生成し1ます。

式を明示的に括弧で囲むと、解析されると予想される方法になります。

if ((print("foo")) || (print("bar"))) 

次に、出力は期待どおりになります。

foo
于 2012-10-18T00:59:02.960 に答える