परिचय: PHP में स्ट्रिंग और नंबर की उलझन
\nकल्पना कीजिए: आप एक डिलीवरी कैलकुलेटर बना रहे हैं, और यूज़र सामानों की संख्या स्ट्रिंग "5" के रूप में डालता है। आप इसमें 10 जोड़ने की कोशिश करते हैं — और 15 के बजाय "510" मिलता है। परिचित लग रहा है? PHP में टाइप कन्वर्ज़न की दुनिया में आपका स्वागत है!
सवाल "How do I convert a string to a number in PHP?" Stack Overflow पर सबसे लोकप्रिय प्रश्नों में से एक है (2 मिलियन से अधिक व्यूज़)। और यह सही भी है: PHP अपनी इम्प्लिसिट टाइपिंग के लिए जाना जाता है, जो एक तरफ जीवन को आसान बनाती है, तो दूसरी तरफ कई जाल बिछाती है।
\nइस गाइड में हम स्ट्रिंग को नंबर में बदलने के 5 भरोसेमंद तरीके सीखेंगे, मिथकों को तोड़ेंगे और बग्स से बचना सीखेंगे। चलिए शुरू करते हैं!
\n\nथ्योरी: PHP के अंदर क्या होता है?
\nPHP एक डायनामिक टाइपिंग वाली भाषा है। एक वेरिएबल पल भर में स्ट्रिंग से नंबर बन सकता है। लेकिन एक पेच है:
\n- \n
- इम्प्लिसिट टाइप कास्टिंग — PHP खुद तय करता है कि डेटा को कैसे समझना है (और अक्सर गलती करता है)। \n
- एक्सप्लिसिट टाइप कास्टिंग — आप खुद कंट्रोल लेते हैं। \n
जब आप "5" + 10 लिखते हैं, तो PHP ऑटोमैटिकली स्ट्रिंग "5" को नंबर में बदल देता है। लेकिन "5 सेब" + 10 ट्राई करें — तो 15 मिलेगा (PHP चुपचाप " सेब" हटा देगा)। और "सेब 5" + 10 देगा 10 (स्ट्रिंग को शून्य माना जाता है)। अव्यवस्था? हाँ। लेकिन हम इसे सुलझाएंगे।
तरीका 1: टाइप कास्टिंग ऑपरेटर (int) और (float)
\nसबसे तेज़ और आसान तरीका है कास्टिंग का उपयोग करना:
\n<?php\n$string = "42.8";\n$int = (int)$string; // 42 (पूर्णांक भाग)\n$float = (float)$string; // 42.8\n\necho $int; // 42\necho $float; // 42.8\n?>\nमहत्वपूर्ण: (int) बिना राउंडिंग के दशमलव भाग को हटा देता है। राउंडिंग के लिए कन्वर्ज़न के बाद round() का उपयोग करें।
कब उपयोग करें: जब आप सुनिश्चित हों कि स्ट्रिंग में सिर्फ एक नंबर है, और आपको तेज़ कास्टिंग चाहिए।
\n\nतरीका 2: intval() और floatval() फंक्शन
\nये कास्टिंग के "बड़े भाई" हैं — अधिक पढ़ने योग्य और लचीले:
\n<?php\n$string = "123.45abc";\n\n$int = intval($string); // 123\n$float = floatval($string); // 123.45\n\n// सिर्फ intval के लिए नंबर सिस्टम निर्दिष्ट करना\n$hexString = "1A";\n$hexInt = intval($hexString, 16); // 26 (हेक्साडेसिमल स्ट्रिंग को बदलता है)\n\necho $int; // 123\necho $float; // 123.45\necho $hexInt; // 26\n?>\nखास बात: intval() विभिन्न नंबर सिस्टम (बाइनरी, ऑक्टल, हेक्साडेसिमल) के साथ काम कर सकता है। floatval() केवल दशमलव के साथ।
कब उपयोग करें: जब स्ट्रिंग के अंत में "कचरा" हो या गैर-मानक नंबर सिस्टम के साथ काम करना हो।
\n\nतरीका 3: settype() फंक्शन — true/false के साथ कन्वर्ज़न
\nक्या आप सिर्फ कन्वर्ट ही नहीं, बल्कि ऑपरेशन की सफलता भी जांचना चाहते हैं? settype() का उपयोग करें:
<?php\n$string = "99.9";\n$result = settype($string, "float"); // true\n\necho $string; // 99.9 (अब यह float है)\necho $result; // 1 (true)\n\n// अगर स्ट्रिंग नंबर नहीं है\n$badString = "hello";\n$result = settype($badString, "integer"); // false\n\necho $badString; // 0 (शून्य में बदल गया)\necho $result; // (खाली, false)\n?>\nमहत्वपूर्ण: settype() वेरिएबल को खुद बदलता है, न कि कोई नया मान लौटाता है। यह तब उपयोगी है जब आप सुनिश्चित करना चाहते हैं कि टाइप बदल गया है।
कब उपयोग करें: जब कन्वर्ज़न की सफलता की जांच ज़रूरी हो (जैसे, यूज़र इनपुट में)।
\n\nतरीका 4: अंकगणितीय ट्रिक्स (और क्यों इनका उपयोग न करें)
\nहाँ, आप $number = $string + 0 लिख सकते हैं — PHP खुद स्ट्रिंग को नंबर में बदल देगा। या $number = $st