2010-02-24 10 views
5

मैंने इस सवाल के शीर्षक में क्या पागल बग कम किया है। मुझे यकीन है कि Php सोचता है कि 0 == '%' (या कोई अन्य विशेष चरित्र, मुझे लगता है) क्यों एक बिल्कुल उचित तर्क है। मैंने सोचा कि स्टैक ओवरफ्लो पर उस स्पष्टीकरण को प्राप्त करना अच्छा होगा!अगर (0 == '%') गूंजें "डब्ल्यूटीएफ, पीएचपी, आप चीजों की तुलना क्यों नहीं कर सकते?"

+1

http://stackoverflow.com/questions/875854/how-best-to-compare-to-0-in-php –

+0

देखें यही कारण है कि मैं PHP और अधिक या कम एक ही तरह से मैं सी बारे में लिखने ++। ;) – Teekin

उत्तर

6

'===' का उपयोग करके (सटीक, शाब्दिक तुलना के लिए - मानों को एक ही प्रकार और बराबर होना चाहिए) '==' इस समस्या को हल करता है। '==' के साथ यह '%' को किसी संख्या में डालने का प्रयास कर रहा है और 0 सबसे अच्छा यह कर सकता है।

+1

यदि आप === का उपयोग करते हैं, तो ध्यान रखें कि $ x = '0'; var_dump ($ x === 0) झूठा देता है ($ x स्ट्रिंग है, 0 एक पूर्णांक है) :) –

0

के बाद से '%' सच नहीं है, यह गलत (0), तो निश्चित रूप से 0 == '%'

;-) अजीब हालांकि

+0

यह स्ट्रिंग को बूल में परिवर्तित नहीं करता है, दूसरा ऑपरेंड पूर्णांक है और बूल नहीं है। –

7

यह करने के लिए भी ऐसा ही होगा होना चाहिए किसी भी स्ट्रिंग, एक गैर-संख्या स्ट्रिंग को पूर्णांक में परिवर्तित करने से हमेशा 0.

+0

यही कारण है कि (कई अन्य पागल चीजों के साथ) PHP को वास्तविक "प्रोग्रामिंग भाषा" भी नहीं माना जाना चाहिए। – slashCoder

1

यदि एक सख्त तुलना ऑपरेटर सीधे उपयुक्त नहीं है, तो यदि आप दोनों मानों को तारों के रूप में तुलना करना चाहते हैं, तो आप strcmp() का उपयोग कर सकते हैं। एक उदाहरण हो सकता है जहां दोनों मान चर हैं, और प्रकार या तो स्ट्रिंग या int हो सकते हैं। स्ट्रिंग के लिए कास्टिंग टाइप करने के बजाय और फिर सख्त समानता जांच का उपयोग करने के बजाय, strcmp() कम वर्बोज़ हो सकता है।

PHP का प्रकार जबरन बहुत सुविधाजनक है। लेकिन अगर आप इसके कई नियमों को समझ नहीं पाते हैं (कुछ काट सकते हैं), तो आपको इसका उपयोग करने से बचने की कोशिश करनी चाहिए। http://www.php.net/manual/en/types.comparisons.php

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