PHPでfalseと判定されるもの


「2章PHP言語の基本 2.2データ型」からのメモ。

falseと判定されるもの

==を使ってfalseと判定されるものをまとめてみました。

<?php
if(0 == false){ echo "0 == false\n"; }

if(0.0 == false){ echo "0.0 == false\n"; }

if("" == false){ echo "\"\" == false\n"; }

if("0" == false){ echo "\"0\" == false\n"; }

$empty_array = array();
if($empty_array == false){ echo "empty_array == false\n";}

if(NULL == false){ echo "NULL == false\n";}
?>
0 == false
0.0 == false
"" == false
"0" == false
empty_array == false
NULL == false

rubyではnilとfalse以外はすべてtrueと判定されるので、間違わないように注意が必要です。
class FalseClass

false は nil オブジェクトとともに偽を表し、その他の全てのオブジェクトは真です。


それと本には「メソッドやプロパティをいっさい持たない空のオブジェクト」もfalseと判定されると書いてあったのですが、PHP5.3.2ではそうではないみたいです。

<?php
class EmptyClass
{
}

$empty_obj = new EmptyClass;

if($empty_obj == false){ echo "empty_obj == false\n"; }
else{ echo "empty_obj != false\n"; }
?>
empty_obj != false




他の言語と比較しようかと思いましたが、ちょっと面倒だから今回はスルーします。