PHP एक ढीली टाइप की भाषा है। जब आप केस 0 से मिलान करते हैं तो स्ट्रिंग निकटतम पूर्णांक से मेल खाती है।
मान लीजिए हमारे पास निम्न स्विच एक्सप्रेशन है:
switch ("match")
अब, हम केस 0 से मिलान करेंगे:
case 0:
echo " 0 with match";
break;
हम गैर-शून्य केस के लिए भी मिलान करेंगे:
case "match":
echo "match successful";
break;
उदाहरण
<!DOCTYPE html> <html> <body> <?php
switch ("match") {
case 0:
echo " 0 with match";
break;
case "match":
echo "match successful";
break;
}
?> </body> </html>
आउटपुट
0 with match
व्याख्या: PHP में ढीली तुलना (==) के तहत, स्ट्रिंग "match" को पूर्णांक में बदलने पर 0 बन जाता है (क्योंकि यह संख्या से शुरू नहीं होता)। इसलिए "match" == 0 सत्य होता है, और पहला केस निष्पादित होता है।
समाधान: सख्त तुलना के लिए === का उपयोग करें या मान को स्ट्रिंग में कास्ट करें:
switch (true) {
case $value === 0:
case $value === "match":
}
या PHP 8+ में match एक्सप्रेशन का उपयोग करें जो सख्त तुलना करता है।