2013-07-12 4 views
5

Я пытаюсь использовать file_get_contents для PHP, но он не работает.file_get_contents с пустым файлом не работает PHP

Существует мой код:

$filename = "/opt/gemel/test.txt"; 


if($filecontent = file_get_contents($filename)){ 

    $nom = fgets(STDIN); 

    file_put_contents($filename, $nom, FILE_APPEND); 
} 
else 
    echo "fail"; 

И мой файл test.txt пуст. (0 октетов). Он существует, но он пуст.

Когда я пишу что-то в нем, мой код работает отлично, но если он пустой мой код эхо «не удается»

Почему то, почему он не может открыть файл text.txt?

ответ

13

Функция file_get_contents возвращает строку, которая находится в файле. Если файл не содержит данных, то file_get_contents возвращает пустую строку. Если вы попробуете var_dump('' == false);, вы получите true. Таким образом, даже если файл можно прочитать, содержимое файла оценивается в false.

Если вы будете использовать эту линию, ваш код должен работать:

if($filecontent = file_get_contents($filename) !== false){ 

Edit; ссылка на документацию Comparison operators.

+0

Вы говорите, что ** file_get_contents ** возвращает пустую строку как ложную. Так что эта строка ** file_get_contents ($ filename)! == false ** должна быть ложной, потому что file_get_contents возвращает false. Так почему это работа, а не эхо «провал»? – mpgn

+1

Это связано с типами переменных. file_get_contents возвращает 'false' (boolean), если он не может открыть файл, он возвращает' '' '(строку), если он открывает пустой файл. Сравнение с тройным символом ('! ==') также проверяет, совпадают ли типы переменных. Для получения дополнительной информации, пожалуйста, проверьте ссылку на документацию в моем ответе. –

+0

Хорошо, я не понял нюансов между «типом» и «равным». Спасибо за ваши объяснения. – mpgn

Смежные вопросы