PHPの真偽や型について、ちゃんと分かっていなかったので、
JavaScriptとともにまとめてみました。
まとめ
様々な値をif文で評価した結果を表にしました。
型についてはPHPがvar_dump、JavaScriptではtypeofに基づく情報です。
入力値 | PHP | JavaScript | 備考 |
---|---|---|---|
TRUE | TRUE (bool) | TRUE (boolean) | |
FALSE | FALSE (bool) | FALSE (boolean) | |
-1 | TRUE (int) | TRUE (number) | |
0 | FALSE (int) | FALSE (number) | |
1 | TRUE (int) | TRUE (number) | |
-0.1 | TRUE (float) | TRUE (number) | |
0.0 | FALSE (float) | FALSE (number) | |
0.1 | TRUE (float) | TRUE (number) | |
NaN | --- | FALSE (number) | JavaScriptのみ |
Infinity | --- | TRUE (number) | JavaScriptのみ |
文字列 'a' | TRUE (string) | TRUE (string) | |
空文字列 '' | FALSE (string) | FALSE (string) | |
文字列のゼロ '0' | FALSE (string) | TRUE (string) | 結果が違う |
NULL | FALSE (NULL) | FALSE (object) | |
undefined | --- | FALSE (undefined) | JavaScriptのみ |
空の配列 PHP: array() JavaScript: [] |
FALSE (array) | TRUE (object) | 結果が違う |
空でない配列 PHP: array(0) JavaScript: [0] |
TRUE (array) | TRUE (object) | |
空のオブジェクト PHP: new stdClass() JavaScript: {} |
TRUE (object) | TRUE (object) |
PHPでは文字列のゼロや空の配列がFALSEになるんですね。
JavaScriptを書くことの方が多いので、このあたりは気をつけようと思います。