次のtest.phpが与えられます:
<?php
echo TRUE . "\n"; // prints "1\n"
echo FALSE . "\n"; // prints "\n"
?>
なぜphp -f test.php
印刷しないのですTRUE
かFALSE
?さらに重要なのは、このFALSE
場合、なぜ何も印刷されないのですか?
次のtest.phpが与えられます:
<?php
echo TRUE . "\n"; // prints "1\n"
echo FALSE . "\n"; // prints "\n"
?>
なぜphp -f test.php
印刷しないのですTRUE
かFALSE
?さらに重要なのは、このFALSE
場合、なぜ何も印刷されないのですか?
マニュアルから:
ブール値のTRUE値は、文字列「1」に変換されます。ブール値のFALSEは、 ""(空の文字列)に変換されます。これにより、ブール値と文字列値の間で相互に変換できます。
なぜならfalse == '';
ブール値を印刷するには、次のようにします。
$bool = false;
echo $bool ? 'true' : 'false';
また...
echo $bool ? 'yes' : 'no';
echo $bool ? '1' : '0';
文字列にキャストされたときのブール値は、それぞれにキャストされ1
、空の文字列にキャストされるためです。
おそらくこれは、ブール値->文字列->ブール値の間の透過的なラウンドトリップを有効にするためです。