2011-12-22 8 views
6

मुझे पीएचपी के साथ अलग-अलग समस्या का सामना करना पड़ा है।PHP ने "0" खाली के रूप में व्यवहार किया?

मैं 2 अलग मशीनों पर स्क्रिप्ट निम्नलिखित चलाएँ:

$a = "0"; 
if ($a) { 
    echo("helo"); 
} 

1) स्थानीय मशीन -> PHP 5.2.17 -> यह इलाज किया "0" वैध के रूप में और 'मेरा अनुरोध स्वीकार करने'

प्रिंट 2) सर्वर -> PHP 5.3.6 -> यह "0" को खाली/झूठा मानता है और 'हेलो'

प्रिंट नहीं करेगा क्या यह php कॉन्फ़िगरेशन (यदि हां, कॉन्फ़िगरेशन) या php के कारण है संस्करण?

+4

PHP 5.2.17 (Win32) * $ a = "0" जब * प्रिंट "हेलो" नहीं करता है; '(इसे सुनिश्चित करने के लिए सीएलआई और अपाचे के माध्यम से इसका परीक्षण किया गया है)। स्ट्रिंग में आपके पास एक और चरित्र होना चाहिए - शायद एक सफेद जगह जो मुद्रित होने पर अदृश्य था, जैसे '\ r'? – DaveRandom

उत्तर

5

इस तरह यह माना जाता है। PHP बूलियन संदर्भ में तारों की व्याख्या करता है। "0" एक वास्तविक 0 के बराबर है। (यह भी http://www.php.net/manual/en/types.comparisons.php देखें)

आप के लिए परीक्षण करने के लिए क्या मतलब शायद यह है:

if (strlen($a)) { 
+0

लेकिन यह PHP 5.2.17 में ऐसा नहीं किया? – Jaanus

2

if($a), FALSE होना चाहिए documentation के अनुसार। यह आपकी स्थानीय मशीन पर भी ऐसा होना चाहिए। क्या आप सुनिश्चित हैं कि स्थानीय मशीन पर, आपके पास 0 या कुछ के बाद कोई जगह नहीं है? ("0<space>" TRUE होगा।)

0

ध्वनि मुझे अजीब, मैंने सोचा था कि "0" झूठा था, तो आप समीक्षा कर सकते हैं here

0

पीएचपी interporate "0" झूठे के रूप में के रूप में यह शून्य करने के लिए बराबर की जाएगी/झूठी/0।

हालांकि, यह इसे "0" की स्ट्रिंग के रूप में भी विभाजित कर सकता है। इस प्रकार यदि कथन कथन सत्य वापस आ जाएगा, हालांकि, मुझे लगता है कि यह एक बग होगा जब तक कि आप इसे (स्ट्रिंग) में डालें।

मारियो की तरह, स्ट्रेल ($ ए) की जांच करें या जांचें कि (! खाली ($ ए)) इस तरह से आपको अपना निश्चित उत्तर मिल जाएगा।

मुझे आशा है कि इससे मदद मिलती है!

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