我是 PHP 新手。我正在执行一个脚本,我对以下内容感到困惑:
$local_rate_filename = $_SERVER['DOCUMENT_ROOT']."/ghjr324l.txt";
$local_rates_file_exists = file_exists($local_rate_filename);
echo $local_rates_file_exists."<br>";
这段代码显示一个空字符串,而不是 0 或 1(或 true 或 false)。为什么?文档似乎表明布尔值始终为 0 或 1。这背后的逻辑是什么?
使用布尔值来回转换时要小心,手册说:
布尔 TRUE 值转换为字符串“1”。布尔值 FALSE 是 转换为“”(空字符串)。这允许转换回来和 介于布尔值和字符串值之间。
所以你需要做一个:
echo (int)$local_rates_file_exists."<br>";
结果来自这样一个事实,即如果像在您的示例中那样使用,php 会将 bool 值隐式转换为字符串。
(string)false
给出空字符串,(string)true
给出 '1'
。这与'' == false
和'1' == true
.的事实是一致的
如果您想在不确定返回类型是真/假还是 0/1 时检查文件是否存在,您可以使用 ===.
if($local_rates_file_exists === true)
{
echo "the file exists";
}
else
{
echo "the doesnt file exists";
}