2013-07-12 11 views
5

Próbuję użyć file_get_contents z PHP, ale nie działa.file_get_contents z pustym plikiem nie działa PHP

Jest to mój kod:

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


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

    $nom = fgets(STDIN); 

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

A mój plik test.txt jest pusty. (0 oktetów). On istnieje, ale jest pusty.

gdy piszę coś do niej, mój kod działa doskonale, ale jeśli jest on pusty Moje kod echo „nie”

Dlaczego to, dlaczego on nie może otworzyć pliku text.txt?

Odpowiedz

13

Funkcja file_get_contents zwraca ciąg znaków, który znajduje się w pliku. Jeśli plik nie zawiera żadnych danych, wówczas file_get_contents zwraca pusty ciąg. Jeśli spróbujesz uzyskać var_dump('' == false);, otrzymasz true. Tak więc, nawet jeśli plik można odczytać, zawartość pliku jest oceniana na false.

Jeśli chcesz korzystać z tej linii, kod powinien działać:

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

Edycja; łącze do dokumentacji Comparison operators.

+0

mówisz, że ** file_get_contents ** zwraca pusty ciąg jak fałszywe. Zatem ta linia ** file_get_contents ($ filename)! == false ** ma być fałszywa, ponieważ file_get_contents zwraca false. Dlaczego więc to działa, a nie echo "zawieść"? – mpgn

+1

Ma to związek z typami zmiennych. file_get_contents zwraca 'false' (a boolean), jeśli nie może otworzyć pliku, zwraca' '' '(łańcuch), jeśli otwiera pusty plik. Potrójne porównanie znaków ('! ==') również sprawdza, czy typy zmiennych są takie same. Sprawdź link do dokumentacji w mojej odpowiedzi, aby uzyskać więcej informacji. –

+0

Ok, nie zrozumiałem niuansów między "typem" a "równym". Dziękuję za wyjaśnienia. – mpgn

Powiązane problemy