PHPでの「0」

<?php

$test = 0;
if($test == ""){
        print "true";
}else{
        print "false";
}

この結果は「true」であるらしい*1。え?という結果。

<?php

$test = "0";
if($test == ""){
        print "true";
}else{
        print "false";
}

は「false」なので関数「empty()」の挙動とも異なるようだ…。


<?php

$test = 0;
if($test === ""){
        print "true";
}else{
        print "false";
}

等号を三重にして厳密比較すると、当然期待通りに「false」になるようだ。

*1:PHP 5.2.13