Formatting a number with leading zeros in PHP
我有一个包含值
我希望它包含正好8位数,即
那有PHP功能吗?
使用
1 |
或者,您也可以使用
1 |
鉴于该值是$ value:
-
回应它:
printf("%08d", $value); -
为拿到它,为实现它:
$formatted_value = sprintf("%08d", $value);
这应该够了吧
1 |
当我需要01而不是1时,以下内容对我有用:
1 2 |
虽然我不确定你想做什么,但你可能正在寻找sprintf。
这将是:
1 |
编辑(以某种方式请求downvotes),从上面链接的页面,这里是一个示例"零填充整数":
1 2 3 |
简单回答
1 2 |
我不确定如何解释评论说"它永远不会超过8位",如果它指的是输入或输出。如果它引用输出,则必须有一个额外的substr()调用来剪切字符串。
剪辑前8位数
剪辑最后8位数字
如果输入的数字总是7位或8位,您也可以使用
1 | $str = ($input < 10000000) ? 0 . $input : $input; |
我运行了一些测试,得到的结果是
如果输入可以有任何长度,那么您也可以使用
1 |
这不如另一个快,但也应该比
顺便说一句:我的测试还说
我写了这个简单的函数来生成这种格式:01:00:03
始终显示秒数(即使为零)。
如果大于零或需要小时或天,则显示分钟。
如果大于零或需要几天,则显示小时数。
如果大于零,则显示天数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 |
例子:
1 2 3 4 | 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 |
1 2 3 4 5 6 7 8 9 10 | $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 |
这非常有效:
1 2 |
If you can append zero or anything into string.
like
1 2 3 4 5 6 | public function saveHoliday($month) { return"0{$month}"; } echo $this->saveHoliday(1); // 01 |
你总是可以滥用类型杂耍:
1 2 3 |
如果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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 |