2016-08-08 8 views
0

PHPでは、trueを返すブール演算を型キャストすると、何らかの理由でインタープリタがfalseに型キャストします。どうしてこれなの?この操作はtrueを返す必要がありますブーリアン演算をブール値にブール型にすると、結果はfalseになります。

(bool) 1 === 1 // false 
(bool) (1 === 1) // true 

ますが、何らかの理由でそれがfalseを返します。以下の例を見てみましょう。余分なカッコを追加すると正しく動作します。誰かがこれがなぜなのか説明できますか?私は現在PHP 7.0.8を使用しています。

+4

コードの2行で、PHPの動作を確認できます。 '((bool)1)=== 1' < - その後、TRUE === 1となり、それらは同じ型ではなくなり、結果として出力としてfalseが返されます。 – Rizier123

+0

私はそれがPHP版ではないと言うことができます - '5.3'は' 7.0'と同じように動作します –

答えて

1

これは操作の順序です。

(bool) (1 === 1) 

は最初の括弧の内側に評価する一方で最初の文は、等価性チェック

(bool) 1 === 1 is the same as ((bool) 1) === 1 

前にブール値を評価します。

1はTRUEと同じではありません。

関連する問題