PHP वेब अनुरोधों के साथ उपयोग के लिए (या, बल्कि विकसित) डिज़ाइन किया गया था, जहाँ आप अक्सर स्ट्रिंग इनपुट (URL पैरामीटर, या ब्राउज़र में एक फॉर्म से POST अनुरोध) के साथ काम कर रहे हैं। जैसे, यह स्वचालित रूप से अन्य प्रकारों के लिए तार डालेगा।
इस का एक सरल उदाहरण यह है कि '1' + '2'
देता है 3
, नहीं एक त्रुटि, या '12
', या कुछ अन्य व्याख्या। उसी तर्क से, स्ट्रिंग '0'
को एक संख्यात्मक के रूप में इस्तेमाल किया जा सकता है 0
।
इस बीच, कई भाषाओं की तरह, PHP कुछ मूल्यों को "झूठी" के रूप में मानता है जब बूलियन के लिए डाली जाती है - जो कि सहज रूप से "खाली" हैं, जैसा कि आप कहते हैं। जिसमें संख्यात्मक 0
, साथ ही खाली स्ट्रिंग ''
और खाली सरणी शामिल हैं []
। एक if
बयान में, अभिव्यक्ति स्पष्ट रूप से बूलियन के लिए डाली जाती है, इसलिए if ( 0 )
जैसा है वैसा ही है if ( false )
।
इन दोनों चीजों को एक साथ रखने पर, आपको एक पहेली मिलती है: एक तरफ, जैसा कि आप कहते हैं '0'
कि एक गैर-रिक्त स्ट्रिंग है; दूसरी ओर, हमने कहा है कि इसका उपयोग संख्यात्मक के रूप में किया जा सकता है 0
, जो "खाली" है। PHP "शून्य-नेस" को "कठोरता" की तुलना में अधिक महत्वपूर्ण '0'
मानता है , इसलिए इसे "मिथ्या" माना जाता है।
संक्षेप में '0' == 0 == false
:; या(bool)'0' === (bool)(int)'0'