2013-07-12 16 views
5

Provo a utilizzare file_get_contents in formato PHP ma non funziona.file_get_contents con file vuoto non funzionante PHP

V'è il mio codice:

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


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

    $nom = fgets(STDIN); 

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

E il mio file test.txt è vuota. (0 ottetti). Esiste ma è vuoto.

Quando scrivo qualcosa in esso, il mio codice funziona perfettamente, ma se lui è svuotare il mio codice echo "fallisce"

Perché questo, perché egli non può aprire il file text.txt?

risposta

13

La funzione file_get_contents restituisce la stringa presente nel file. Se il file non contiene dati, quindi file_get_contents restituisce una stringa vuota. Se provassi a var_dump('' == false); otterresti true. Pertanto, anche se il file può essere letto, il contenuto del file viene valutato su false.

Se si desidera utilizzare questa linea, il codice dovrebbe funzionare:

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

Modifica; link alla documentazione dello Comparison operators.

+0

dici ** file_get_contents ** restituisce una stringa vuota come un falso. Quindi questa riga ** file_get_contents ($ filename)! == false ** dovrebbe essere falsa, perché file_get_contents restituisce false. Allora, perché è il lavoro e non l'eco "fallire"? – mpgn

+1

Ha a che fare con i tipi di variabili. file_get_contents restituisce 'false' (un valore booleano) se non può aprire il file, restituisce' '' '(una stringa) se apre un file vuoto. Il confronto dei caratteri tripli ('! ==') controlla anche se i tipi di variabili sono gli stessi. Si prega di controllare il link alla documentazione nella mia risposta per ulteriori informazioni. –

+0

Ok, non ho afferrato la sfumatura tra "tipo" e "uguale a". Grazie per le tue spiegazioni. – mpgn

Problemi correlati