मेरे पास एक चर है जिसमें मूल्य शामिल है 1234567
।
मैं चाहूंगा कि इसमें 8 अंक हों, यानी 01234567
।
क्या इसके लिए कोई PHP फ़ंक्शन है?
मेरे पास एक चर है जिसमें मूल्य शामिल है 1234567
।
मैं चाहूंगा कि इसमें 8 अंक हों, यानी 01234567
।
क्या इसके लिए कोई PHP फ़ंक्शन है?
जवाबों:
उपयोग करें sprintf
:
sprintf('%08d', 1234567);
वैकल्पिक रूप से आप भी उपयोग कर सकते हैं str_pad
:
str_pad($value, 8, '0', STR_PAD_LEFT);
sprintf('%+03d:00 UTC',$i)
कहां $i
-12 से 12 है, आवश्यकतानुसार प्रिंट + या - करेगा और 2 अंकों से कम संख्या के लिए अग्रणी शून्य भी डालेगा। SELECT
HTML में टाइमजोन बनाने के लिए बढ़िया है ।
sprintf
( 3v4l.org/junvv/perf#output ) की तुलना में एक छोटा सा तेजी से होता है str_pad
( 3v4l.org/cliNP/perf#output )
यह देखते हुए कि मूल्य $ मूल्य में है:
इसे प्रतिध्वनित करने के लिए:
printf("%08d", $value);
इसे पाने के लिए:
$formatted_value = sprintf("%08d", $value);
यह ट्रिक काम आना चाहिए
जब मुझे 1 के बजाय 01 की आवश्यकता होती है, तो निम्नलिखित ने मेरे लिए काम किया:
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
हालांकि मुझे वास्तव में यकीन नहीं है कि आप क्या करना चाहते हैं, आप शायद स्प्रिंट की तलाश में हैं ।
यह होगा:
$value = sprintf( '%08d', 1234567 );
sprintf
आपको क्या चाहिए
EDIT ( किसी तरह डाउनवोट्स द्वारा अनुरोध किया गया है ), ऊपर दिए गए पृष्ठ से, यहां एक नमूना "शून्य-गद्देदार पूर्णांक" है:
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
सरल उत्तर
$p = 1234567;
$p = sprintf("%08d",$p);
मुझे यकीन नहीं है कि टिप्पणी की व्याख्या कैसे करें "यह 8 अंकों से अधिक कभी नहीं होगा" और अगर यह इनपुट या आउटपुट की बात कर रहा है। यदि यह आउटपुट को संदर्भित करता है तो आपको स्ट्रिंग को क्लिप करने के लिए एक अतिरिक्त पदार्थ () कॉल करना होगा।
पहले 8 अंकों को क्लिप करने के लिए
$p = substr(sprintf('%08d', $p),0,8);
अंतिम 8 अंक क्लिप करने के लिए
$p = substr(sprintf('%08d', $p),-8,8);
यदि इनपुट नंबर में हमेशा 7 या 8 अंक होते हैं, तो आप भी उपयोग कर सकते हैं
$str = ($input < 10000000) ? 0 . $input : $input;
मैंने कुछ परीक्षण चलाए और यह पाया कि यह तेजी से दोगुना होगा str_pad
या sprintf
।
यदि इनपुट में कोई लंबाई हो सकती है, तो आप भी उपयोग कर सकते हैं
$str = substr('00000000' . $input, -8);
यह दूसरे की तरह तेज नहीं है, लेकिन थोड़ा तेज भी होना चाहिए str_pad
और sprintf
।
Btw: मेरे परीक्षण ने यह भी कहा कि sprintf
की तुलना में थोड़ा तेज हैstr_pad
। मैंने PHP 5.6 के साथ सभी परीक्षण किए।
संपादित करें: कम से कम substr
संस्करण अभी भी बहुत तेज़ लगता है (PHP 7.2), यह उस स्थिति में भी टूट जाता है जब आपका इनपुट उस लंबाई से अधिक हो सकता है जिसे आप पैड करना चाहते हैं। उदाहरण के लिए, आप 3 अंकों को पैड करना चाहते हैं और आपके इनपुट में 4 की तुलना substr('0000' . '1234', -3) = '234'
में केवल अंतिम 3 अंक होंगे
$
मैंने अभी तय किया)
मैंने इस प्रारूप का निर्माण करने के लिए यह सरल कार्य लिखा है: 01:00:03
सेकंड्स हमेशा दिखाए जाते हैं (भले ही शून्य)। मिनट शून्य से अधिक या यदि घंटे या दिन आवश्यक हैं, तो दिखाए जाते हैं। घंटे दिखाए जाते हैं यदि शून्य से अधिक या यदि दिन की आवश्यकता होती है। यदि शून्य से अधिक हो तो दिन दिखाए जाते हैं।
function formatSeconds($secs) {
$result = '';
$seconds = intval($secs) % 60;
$minutes = (intval($secs) / 60) % 60;
$hours = (intval($secs) / 3600) % 24;
$days = intval(intval($secs) / (3600*24));
if ($days > 0) {
$result = str_pad($days, 2, '0', STR_PAD_LEFT) . ':';
}
if(($hours > 0) || ($result!="")) {
$result .= str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
}
if (($minutes > 0) || ($result!="")) {
$result .= str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
}
//seconds aways shown
$result .= str_pad($seconds, 2, '0', STR_PAD_LEFT);
return $result;
} //funct
उदाहरण:
echo formatSeconds(15); //15
echo formatSeconds(100); //01:40
echo formatSeconds(10800); //03:00:00 (mins shown even if zero)
echo formatSeconds(10000000); //115:17:46:40
$no_of_digit = 10;
$number = 123;
$length = strlen((string)$number);
for($i = $length;$i<$no_of_digit;$i++)
{
$number = '0'.$number;
}
echo $number; /////// result 0000000123
यह पूरी तरह से काम करता है:
$number = 13246;
echo sprintf( '%08d', $number );
function duration($time){
$hours = '';
$minutes = '00:';
$seconds = '00';
if($time >= 3600){
//0 - ~ hours
$hours = floor($time / 3600);
$hours = str_pad($hours, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 3600;
}
if($time >= 60){
//0 - 60 minute
$minutes = floor($time / 60);
$minutes = str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':';
$time = $time % 60;
}
if($time){
//0 - 60 second
$seconds = str_pad($time, 2, '0', STR_PAD_LEFT);
}
return $hours . $minutes . $seconds;
}
echo duration(59); // 00:59
echo duration(590); // 09:50
echo duration(5900); // 01:38:20