PHP напечатанное логическое значение пуст, почему?
Я новичок в PHP. Я реализую script, и меня озадачивает следующее:
$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. Какова логика этого?
Ответы
Ответ 1
Будьте осторожны, когда вы конвертируете назад и вперед с помощью boolean, в руководстве написано:
Булево значение TRUE преобразуется в строку "1". Boolean FALSE - это преобразован в "" (пустая строка). Это позволяет между булевыми и строковыми значениями.
Итак, вам нужно сделать:
echo (int)$local_rates_file_exists."<br>";
Ответ 2
О преобразовании логического в строку, руководство фактически говорит:
Значение boolean TRUE преобразуется в строку "1". Boolean FALSE преобразуется в "" (пустая строка). Это позволяет конвертировать назад и вперед между булевыми и строковыми значениями.
Логическое значение всегда может быть представлено как 1 или 0, но это не то, что вы получаете, когда конвертируете его в строку.
Если вы хотите, чтобы он был представлен как целое число, применил его к одному:
$intVar = (int) $boolVar;
Ответ 3
Результаты исходят из того факта, что php неявно преобразует значения bool в строки, если они используются как в вашем примере. (string)false
дает пустую строку и (string)true
дает '1'
. Это согласуется с тем, что '' == false
и '1' == true
.
Ответ 4
Если вы хотите проверить, существует ли файл, если вы не уверены в возвращаемом типе, это true/false или 0/1, вы можете использовать ===.
if($local_rates_file_exists === true)
{
echo "the file exists";
}
else
{
echo "the doesnt file exists";
}