2013-07-12 207 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){ 

編輯;鏈接到Comparison operators的文檔。

+0

你說** file_get_contents **返回一個空字符串,如false。所以這行** file_get_contents($ filename)!== false **應該是錯誤的,因爲file_get_contents返回false。那麼,爲什麼它的工作,而不是回聲「失敗」? – mpgn

+1

它與變量的類型有關。如果file_get_contents無法打開文件,它將返回'false'(布爾值),如果它打開一個空文件,則返回''''(一個字符串)。三重字符比較('!==')還檢查變量的類型是否相同。請查看我答案中文檔的鏈接以獲取更多信息。 –

+0

好的,我沒有把握「類型」和「等於」之間的細微差別。謝謝你的解釋。 – mpgn

相關問題