2013-07-12 26 views
5

Tôi cố gắng sử dụng file_get_contents mẫu PHP nhưng nó không hoạt động.file_get_contents với tập tin rỗng không hoạt động PHP

Có mã của tôi:

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


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

    $nom = fgets(STDIN); 

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

Và tập tin test.txt tôi trống. (0 octet). Anh ta tồn tại nhưng anh ta trống rỗng.

Khi tôi viết một cái gì đó vào nó, mã của tôi hoạt động hoàn hảo nhưng nếu anh là trống mã của tôi echo "thất bại"

Tại sao vậy, tại sao anh không thể mở file text.txt?

Trả lời

13

Hàm file_get_contents trả về chuỗi có trong tệp. Nếu tệp không chứa dữ liệu, thì file_get_contents trả về một chuỗi trống. Nếu bạn muốn thử số var_dump('' == false);, bạn sẽ nhận được true. Vì vậy, mặc dù tệp có thể được đọc, nội dung của tệp sẽ được đánh giá là false.

Nếu bạn sẽ sử dụng dòng này, mã của bạn nên làm việc:

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

Chỉnh sửa; liên kết đến tài liệu của Comparison operators.

+0

bạn nói ** file_get_contents ** trả về một chuỗi trống giống như một chuỗi sai. Vì vậy, dòng này ** file_get_contents ($ filename)! == false ** được cho là sai, vì file_get_contents trả về false. Vậy tại sao nó hoạt động và không lặp lại "thất bại"? – mpgn

+1

Nó phải làm với các loại biến. file_get_contents trả về 'false' (một boolean) nếu nó không thể mở tệp, nó trả về' '' '(một chuỗi) nếu nó mở một tệp rỗng. Phép so sánh nhân vật ba ('! ==') cũng kiểm tra xem các kiểu biến có giống nhau hay không. Vui lòng kiểm tra liên kết đến tài liệu trong câu trả lời của tôi để biết thêm thông tin. –

+0

Ok, tôi không nắm bắt được sắc thái giữa "loại" và "bằng". Cảm ơn bạn đã giải thích. – mpgn