PHP

2012-12-04 17 views
8

में 3 से अधिक सत्य क्यों है, मुझे आश्चर्य है कि PHP में निम्नलिखित कथन सत्य क्यों लौट रहा है?PHP

true>=4 

उदाहरण के लिए इस तरह के लाइन गूंज जाएगा 1

echo true>=4; 

किसी ने मुझे इस के पीछे तर्क व्याख्या कर सकते हैं?

+9

पूर्णांक 4 तुलना से पहले एक बूलियन प्रकार में परिवर्तित किया जा रहा है। सभी गैर-शून्य पूर्णांक बुलियन मान TRUE में कनवर्ट करते हैं। यदि आप 'true> = 0' आज़माते हैं तो आप देखेंगे कि यह भी सच है, क्योंकि' सत्य> गलत '। http://php.net/manual/en/language.types.boolean.php –

+3

प्रश्न शीर्षक '3 से अधिक सच क्यों है' के बारे में Sidenote। यह। इसके बराबर 3. और निश्चित रूप से, प्रश्न 4. –

उत्तर

18

डेविड के जवाब के अलावा, मैंने थोड़ा और गहराई देने के लिए कुछ जोड़ने का विचार किया।

अन्य प्रोग्रामिंग भाषाओं के विपरीत PHP, यदि आप अपने ऑपरेटरों/वाक्यविन्यास से सावधान नहीं हैं तो आप जिस तरह से अनुभव करते हैं, उतना मुश्किल पॉट छेद में पड़ सकते हैं।

के रूप में डेविड ने कहा,

4 भी सच है (क्योंकि यह गैर शून्य है), और सच सच करने के लिए बराबर है, तो यह भी से बड़ा या सच के बराबर है।

इसे ध्यान में रखें सत्य गलत से बड़ा है।

सच = 1

झूठी = 0

इसलिए उदाहरण के लिए ले:

$test = 1; 
if ($test == true){ 
echo "This is true"; 
}else{ 
echo "This is false"; 
} 

ऊपर इच्छा उत्पादन

यह सच है

लेकिन अगर आप इस ले:

$test = 1; 
if ($test === true){ 
echo "This is true"; 
}else{ 
echo "This is false"; 
} 

ऊपर इच्छा उत्पादन:

यह झूठी

जोड़ा बराबर के चिह्न, सटीक मिलान के लिए लग रहा है, इस प्रकार की तलाश में है PHP के पढ़ने के बजाय integer

मुझे पता है कि यह एक छोटा सा विषय है, लेकिन सिर्फ कुछ पॉट छेदों को समझाना चाहता था जो PHP में हैं।

मुझे आशा है कि यह कुछ मदद की है

संपादित करें:

अपने प्रश्न के उत्तर में:

गूंज सच> = 4;

कारण आप आउटपुट के रूप में 1 देख रहे हैं, क्योंकि सही/गलत संख्या के रूप में (ऊपर देखें)

बावजूद अगर आपके echo true>=4 या सिर्फ echo true; php कर 0

के रूप में 1 के रूप में सही और गलत डालता व्याख्या की है है
+1

+1। मुझे वास्तव में यह जवाब पसंद है। इसमें एक अच्छी व्याख्या शामिल है जो मूल प्रश्न पर फैली हुई है। यह भी एक शुरुआत करने वाला है जिसका लक्ष्य शायद ओपी है। अच्छा! –

+0

धन्यवाद, यही वह है जिसे मैं ढूंढ रहा था और मैं पूरी तरह से भूल गया ===। बीटीडब्ल्यू मुझे लगता है कि आप दूसरे उदाहरण में "यह झूठा है" का मतलब है। – Dharman

+0

@ धर्ममान वास्तव में मुझे याद आया; अब –

20

4 भी true है (क्योंकि यह गैर शून्य है), और true, true के बराबर है तो यह भी से बड़ा या true के बराबर है।

यदि एक बूल या नल स्ट्रिंग के अलावा किसी अन्य चीज़ की तुलना में की जाती है, तो उस चीज को एक बूल में डाला जाता है। the docs देखें।

+2

को संदर्भित करता है, इसलिए संख्या को इसके विपरीत के बजाय बूलियन पर डाला जाता है ... क्या एक अद्भुत भाषा ... –

+0

हाँ। आपको यह मिला। यदि एक बूल या नल की तुलना किसी स्ट्रिंग के अलावा किसी अन्य चीज़ से की जाती है, तो उस चीज को एक बूल में डाला जाता है। [डॉक्स] देखें (http://php.net/manual/en/language.operators.comparison.php)। –

+0

@JanDvorak यह PHP के लिए है! –