PHP打印的布尔值为空,为什么?

Jér*_*nge 34 php boolean echo

我是PHP的新手.我正在实现一个脚本,我对以下内容感到困惑:

$local_rate_filename = $_SERVER['DOCUMENT_ROOT']."/ghjr324l.txt";
$local_rates_file_exists = file_exists($local_rate_filename);

echo $local_rates_file_exists."<br>";
Run Code Online (Sandbox Code Playgroud)

这段代码显示一个空字符串,而不是0或1(或true或false).为什么?文档似乎表明布尔值总是0或1.这背后的逻辑是什么?

dyn*_*mic 45

使用布尔值来回转换时要小心,手册说:

布尔值TRUE值转换为字符串"1".Boolean FALSE转换为""(空字符串).这允许在布尔值和字符串值之间来回转换.

所以你需要做一个:

echo (int)$local_rates_file_exists."<br>";
Run Code Online (Sandbox Code Playgroud)


Dav*_*dom 23

关于将布尔值转换为字符串,手册实际上:

布尔值TRUE值转换为字符串"1".Boolean FALSE转换为""(空字符串).这允许在布尔值和字符串值之间来回转换.

布尔值总是可以表示为1或0,但这不是您将其转换为字符串时得到的.

如果您希望将其表示为整数,请将其强制转换为:

$intVar = (int) $boolVar;
Run Code Online (Sandbox Code Playgroud)

  • +1"这允许在布尔值和字符串值之间来回转换." 如果将FALSE转换为"0",那也是如此.但是,我想,这将是太一致的,PHP总是努力让程序员感到惊讶. (19认同)
  • 可以用PHP编写Web应用程序,但是也可以在袜子的积雪中徒步一英里。 (2认同)