2013-07-12 12 views
5

मैं file_get_contents फॉर्म PHP का उपयोग करने का प्रयास करता हूं लेकिन यह काम नहीं कर रहा है। खाली हैफ़ाइल_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 ** एक खाली स्ट्रिंग को झूठी की तरह वापस करें। तो यह लाइन ** file_get_contents ($ filename)! == झूठी ** झूठी होने वाली है, क्योंकि file_get_contents झूठी वापसी करते हैं। तो यह क्यों काम करता है और "असफल" गूंज नहीं करता है? – mpgn

+1

इसे चर के प्रकारों के साथ करना है। file_get_contents 'false' (एक बूलियन) देता है अगर यह फ़ाइल नहीं खोल सकता है, तो यह '' '(एक स्ट्रिंग) देता है यदि यह एक खाली फ़ाइल खुलता है। ट्रिपल कैरेक्टर तुलना ('! ==') यह भी जांचती है कि चर के प्रकार समान हैं या नहीं। अधिक जानकारी के लिए कृपया मेरे उत्तर में दस्तावेज़ के लिंक को देखें। –

+0

ठीक है, मुझे "टाइप" और "बराबर" के बीच बारीकियों को समझ नहीं आया। आपकी व्याख्या के लिए धन्यवाद। – mpgn

संबंधित मुद्दे