PHP напечатанное логическое значение пуст, почему?

Я новичок в 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. Какова логика этого?

    Будьте осторожны, когда вы конвертируете назад и вперед с помощью boolean, в руководстве написано:

    Булево значение TRUE преобразуется в строку «1». Boolean FALSE преобразуется в "" (пустая строка). Это позволяет конвертировать назад и вперед между булевыми и строковыми значениями.

    Поэтому вам нужно сделать следующее:

     echo (int)$local_rates_file_exists."<br>"; 

    О преобразовании логического в строку, в руководстве на самом деле говорится :

    Булево значение TRUE преобразуется в строку «1». Boolean FALSE преобразуется в "" (пустая строка). Это позволяет конвертировать назад и вперед между булевыми и строковыми значениями.

    Логическое значение всегда может быть представлено как 1 или 0, но это не то, что вы получаете, когда конвертируете его в строку.

    Если вы хотите, чтобы он был представлен как целое число, добавьте его в одно :

     $intVar = (int) $boolVar; 

    Результаты исходят из того факта, что php неявно преобразует значения bool в строки, если они используются как в вашем примере. (string)false дает пустую строку и (string)true дает '1' . Это согласуется с тем, что '' == false и '1' == true .

    Если вы хотите проверить, существует ли файл, если вы не уверены в возвращаемом типе, это true / false или 0/1, вы можете использовать ===.

     if($local_rates_file_exists === true) { echo "the file exists"; } else { echo "the doesnt file exists"; }