表題の件、PHP では if($x)
とすると、$x を評価して、TRUE or FALSE で分岐する認識です。
その際の評価ですが、(bool)$x
と同じ評価となるのでしょうか?
マニュアルには以下の記載があります。
if
式のセクションで 記述したように式は論理値で評価されます。 式が TRUE と評価された場合、 PHP は文を実行します。FALSE と評価された場合は、これを無視します。どのような値が FALSE と評価されるかについては論理値への変換 を参照してください。
boolean に明示的に変換を行うには、キャスト (bool) または (boolean) を使用します。しかし、演算子、関数、制御構造が boolean 型の引数を必要とする場合には、値は自動的に変換されるため、 多くの場合はキャストは不要です。
マニュアルを読む限り正しいと思うのですが、最近 論理型に対して大きな勘違いをしていたため、ズレていないか確認したく質問しています。
ざっと確認した限り、正しそうなのですが。。。
php
1$value:true 2(bool)$value:true 3if($value):true 4===== 5$value:false 6(bool)$value:false 7if($value):false 8===== 9$value:1 10(bool)$value:true 11if($value):true 12===== 13$value:0 14(bool)$value:false 15if($value):false 16===== 17$value:-1 18(bool)$value:true 19if($value):true 20===== 21$value:'1' 22(bool)$value:true 23if($value):true 24===== 25$value:'0' 26(bool)$value:false 27if($value):false 28===== 29$value:'-1' 30(bool)$value:true 31if($value):true 32===== 33$value:NULL 34(bool)$value:false 35if($value):false 36===== 37$value:array ( ) 38(bool)$value:false 39if($value):false 40===== 41$value:'php' 42(bool)$value:true 43if($value):true 44===== 45$value:'' 46(bool)$value:false 47if($value):false 48=====
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/07 07:06