[PHP] 間違いやすい真偽値メモ

PHP5で、以下の式・値を真偽値として評価(var_dump((bool)$value)するとどうなるか。

0 + true
0 + ‘true’

‘0’
’00’
‘0.0’

解答は以下。

0 + true // 真偽値trueはintとして評価されると1になるので、0 + 1 = 1 true
0 + 'true' // 文字列'true'はintとして評価されると0になるので、0 + 0 = 0 false

/* 文字列を整数(int)として評価すると、
** 先頭から整数に変換可能な範囲を整数に変換し、
** それ以降を無視する。整数に変換できる文字列を含まない場合は0になる。
** (int)'123' // 123
** (int)'123hoge' // 123
** (int)'123hoge456' // 123
** (int)'1.23' // 1(.(ドット)は整数に変換できないので、.より後ろは無視される)
** (int)'hoge' // 0
*/

'0' // '0'を真偽値として評価するとfalse '00' // true ※ '0.0' // true ※
/* ※文字列を真偽値として評価するとfalseになるのは、
** 空文字列の場合と、'0'一文字だけの場合
*/

コメントを残す

コメントを残す