"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PHP की ढीली स्ट्रिंग-टू-इंटीजर तुलना कभी-कभी अप्रत्याशित परिणाम क्यों देती है?

PHP की ढीली स्ट्रिंग-टू-इंटीजर तुलना कभी-कभी अप्रत्याशित परिणाम क्यों देती है?

2024-12-23 को प्रकाशित
ब्राउज़ करें:469

Why Does PHP's Loose String-to-Integer Comparison Sometimes Return Unexpected Results?

पूर्णांक से स्ट्रिंग की तुलना: असामान्य घटना की व्याख्या

PHP में, पूर्णांक से स्ट्रिंग की तुलना कभी-कभी विचित्र परिणाम दे सकती है। यह भ्रम PHP के ढीले तुलना व्यवहार से उत्पन्न होता है, विशेष रूप से जब स्ट्रिंग्स की तुलना मान 0 से की जाती है। $test2 = "3581169b064f71be1630b321d3ca318f"; अगर ($test1 == 0) इको "टेस्ट 1 बराबर है!"; यदि ($test2 == 0) इको "टेस्ट 2 बराबर है!?";

आश्चर्यजनक रूप से, इस कोड का आउटपुट है:

$test1 = "d85d1d81b25614a3504a3d5601a9cb2e";
$test2 = "3581169b064f71be1630b321d3ca318f";

if ($test1 == 0)
  echo "Test 1 is Equal!?";
if ($test2 == 0)
  echo "Test 2 is Equal!?";

ऐसा क्यों होता है ?
Test 1 is Equal!?

स्ट्रिंग को संख्याओं में बदलने पर PHP दस्तावेज़ के अनुसार, जब एक स्ट्रिंग का मूल्यांकन एक संख्यात्मक संदर्भ में किया जाता है (जैसे कि a तुलना), इसकी सामग्री के आधार पर इसे फ़्लोट या पूर्णांक में परिवर्तित किया जाता है। यदि स्ट्रिंग में '.', 'e', ​​या 'E' जैसे वर्ण हैं, तो इसे फ़्लोट के रूप में माना जाता है। अन्यथा, इसे एक पूर्णांक माना जाता है। सच है।

$test2 काम क्यों नहीं करता?

$test2 भी गैर-संख्यात्मक वर्णों से शुरू होता है, तो यह भी 0 के बराबर क्यों नहीं है? ऐसा इसलिए है क्योंकि स्ट्रिंग के प्रारंभ में वर्ण '3' है। PHP दस्तावेज़ के अनुसार, एक वैध संख्या एक चिह्न (वैकल्पिक) से शुरू होती है जिसके बाद अंक आते हैं। इस प्रकार, $test2 को 0 के मान के साथ एक फ़्लोट में बदल दिया जाता है, और तुलना $test2 == 0 का मूल्यांकन ग़लत होता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3