PHP में अग्रणी शून्य: यह क्यों महत्वपूर्ण है और गलती कैसे न करें
\n\nएक स्थिति की कल्पना करें: आप एक ऑनलाइन स्टोर बना रहे हैं, और आपको ऑर्डर नंबर प्रदर्शित करना है। ग्राहक "ऑर्डर संख्या 42" देखता है, और उसके बगल में "ऑर्डर संख्या 7" देखता है। यह अव्यवस्थित लगता है, है ना? तुरंत "ऑर्डर संख्या 00042" और "ऑर्डर संख्या 00007" बनाने का मन करता है। या आप तिथियों के साथ काम कर रहे हैं: जनवरी महीना 01 होना चाहिए, न कि केवल 1। यहीं पर PHP में अग्रणी शून्य काम आते हैं।
प्रश्न "Formatting a number with leading zeros in PHP" Stack Overflow पर सबसे लोकप्रिय प्रश्नों में से एक है। हजारों डेवलपर्स उत्तर खोजते हैं कि संख्या 5 को 005 या 42 को 0042 में कैसे बदलें। यह एक छोटी सी बात लगती है, लेकिन सही दृष्टिकोण के बिना, विशेष रूप से डेटाबेस या API के साथ काम करते समय, आपको बग मिल सकते हैं।
\n\nइस लेख में, मैं आपको PHP में संख्या में अग्रणी शून्य जोड़ने के 4 कार्यशील तरीके दिखाऊंगा। आप जानेंगे कि sprintf, str_pad से कैसे अलग है, printf का उपयोग कब करना है, और पुराना अच्छा substr भी कैसे काम आ सकता है। चलिए शुरू करते हैं!
तरीका 1: sprintf — स्वरूपण का राजा
\n\nफ़ंक्शन sprintf शायद इस समस्या को हल करने का सबसे सुरुचिपूर्ण तरीका है। यह C भाषा से PHP में आया है और एक टेम्पलेट के अनुसार स्ट्रिंग्स को स्वरूपित कर सकता है। अग्रणी शून्य के लिए, स्पेसिफायर %0Nd का उपयोग किया जाता है, जहाँ N शून्य सहित संख्या की कुल लंबाई है।
मूल उदाहरण
\n<?php\n$number = 7;\n$formatted = sprintf("%05d", $number);\necho $formatted; // आउटपुट: 00007\n?>\n\n\nटेम्पलेट "%05d" को समझते हैं:
- \n
%— स्पेसिफायर की शुरुआत \n0— रिक्त स्थान के बजाय शून्य से भरें \n5— स्ट्रिंग की कुल लंबाई (5 वर्ण) \nd— पूर्णांक (decimal) \n
ऋणात्मक संख्याओं के साथ कार्य
\nध्यान दें: यदि संख्या ऋणात्मक है, तो अग्रणी शून्य ऋण चिह्न के बाद दिखाई देंगे:
\n<?php\n$number = -42;\necho sprintf("%05d", $number); // आउटपुट: -0042\n?>\n\n\nगतिशील लंबाई
\nयदि आवश्यक लंबाई पहले से ज्ञात नहीं है, तो टेम्पलेट में * का उपयोग किया जा सकता है:
<?php\n$number = 123;\n$length = 8;\necho sprintf("%0{$length}d", $number); // आउटपुट: 00000123\n// या * के माध्यम से\necho sprintf("%0*d", $length, $number); // आउटपुट: 00000123\n?>\n\n\nलाभ: लचीलापन, पठनीयता, विभिन्न डेटा प्रकारों के लिए समर्थन।
\nनुकसान: स्पेसिफायर का सिंटैक्स याद रखना आवश्यक है।
तरीका 2: str_pad — सरलता और स्पष्टता
\n\nफ़ंक्शन str_pad स्ट्रिंग स्तर पर काम करता है। आप संख्या लेते हैं, इसे स्ट्रिंग में बदलते हैं और आवश्यक लंबाई तक बाईं ओर शून्य से "भरते" हैं। यह एक शुरुआत करने वाले के लिए भी सहज रूप से समझ में आता है।
सिंटैक्स
\n<?php\n$number = 7;\n$formatted = str_pad($number, 5, "0", STR_PAD_LEFT);\necho $formatted; // आउटपुट: 00007\n?>\n\n\nपैरामीटर:
\n- \n
$number— इनपुट स्ट्रिंग (संख्या स्वचालित रूप से परिवर्तित हो जाती है) \n5— परिणाम की वांछित लंबाई \n"0"— भरने के लिए वर्ण \nSTR_PAD_LEFT— बाईं ओर से भरें (इसके अलावाSTR_PAD_RIGHTऔरSTR_PAD_BOTHभी हैं) \n
महत्वपूर्ण बारीकी: यदि संख्या लंबी है
\nयदि मूल संख्या पहले से ही निर्धारित लंबाई से अधिक लंबी है, तो str_pad इसे वैसे ही वापस कर देगा:
<?php\necho str_pad(123456, 3, "0", STR_PAD_LEFT); // आउटपुट: 123456 (काटता नहीं!)\n?>\n\n\nsprintf के साथ तुलना
\n<?php\n$number = 42;\necho sprintf("%05d", $number); // 00042\necho str_pad($number, 5, "0", STR_PAD_LEFT); // 00042\n// परिणाम समान है, लेकिन कोड अलग तरह से पढ़ा जाता है\n?>\n\n\nलाभ: स्पष्ट सिंटैक्स, स्पेसिफायर याद रखने की आवश्यकता नहीं।
\nनुकसान: केवल स्ट्रिंग्स के साथ काम करता है, कोई अंतर्निहित नहीं है