Reputation: 59586
I am new to PHP. I am implementing a script and I am puzzled by the following:
$local_rate_filename = $_SERVER['DOCUMENT_ROOT']."/ghjr324l.txt";
$local_rates_file_exists = file_exists($local_rate_filename);
echo $local_rates_file_exists."<br>";
This piece of code displays an empty string, rather than 0 or 1 (or true or false). Why? Documentation seems to indicate that a boolean value is always 0 or 1. What is the logic behind this?
Upvotes: 45
Views: 33356
Reputation: 48101
Be careful when you convert back and forth with boolean, the manual says:
A boolean TRUE value is converted to the string "1". Boolean FALSE is converted to "" (the empty string). This allows conversion back and forth between boolean and string values.
So you need to do a:
echo (int)$local_rates_file_exists."<br>";
Upvotes: 54
Reputation: 8885
The results come from the fact that php implicitly converts bool values to strings if used like in your example. (string)false
gives an empty string and (string)true
gives '1'
. That is consistent with the fact that '' == false
and '1' == true
.
Upvotes: 1
Reputation: 88647
About converting a boolean to a string, the manual actually says:
A boolean TRUE value is converted to the string "1". Boolean FALSE is converted to "" (the empty string). This allows conversion back and forth between boolean and string values.
A boolean can always be represented as a 1 or a 0, but that's not what you get when you convert it to a string.
If you want it to be represented as an integer, cast it to one:
$intVar = (int) $boolVar;
Upvotes: 24
Reputation: 348
If you wanna check if the file exists when your are not sure of the return type is true/false or 0/1 you could use ===.
if($local_rates_file_exists === true)
{
echo "the file exists";
}
else
{
echo "the doesnt file exists";
}
Upvotes: 0