rek*_*o_t 1136
用途sprintf:
sprintf('%08d', 1234567);
Run Code Online (Sandbox Code Playgroud)
或者你也可以使用str_pad:
str_pad($value, 8, '0', STR_PAD_LEFT);
Run Code Online (Sandbox Code Playgroud)
Kaz*_*Koe 78
鉴于该值是$ value:
回应它:
printf("%08d", $value);
为拿到它,为实现它:
$formatted_value = sprintf("%08d", $value);
这应该够了吧
Md.*_*man 27
当我需要01而不是1时,以下内容对我有用:
$number = 1;
$number = str_pad($number, 2, '0', STR_PAD_LEFT);
Run Code Online (Sandbox Code Playgroud)
joa*_*16v 25
echo str_pad("1234567", 8, '0', STR_PAD_LEFT);
Run Code Online (Sandbox Code Playgroud)
Hup*_*pie 18
虽然我不确定你想做什么,但你可能正在寻找sprintf.
这将是:
$value = sprintf( '%08d', 1234567 );
Run Code Online (Sandbox Code Playgroud)
小智 14
sprintf 是你需要的.
编辑(以某种方式请求downvotes),从上面链接的页面,这里是一个示例"零填充整数":
<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>
Run Code Online (Sandbox Code Playgroud)
Pet*_*ist 13
简单回答
$p = 1234567;
$p = sprintf("%08d",$p);
Run Code Online (Sandbox Code Playgroud)
我不确定如何解释评论说"它永远不会超过8位",如果它指的是输入或输出.如果它引用输出,则必须有一个额外的substr()调用来剪切字符串.
剪辑前8位数
$p = substr(sprintf('%08d', $p),0,8);
Run Code Online (Sandbox Code Playgroud)
剪辑最后8位数字
$p = substr(sprintf('%08d', $p),-8,8);
Run Code Online (Sandbox Code Playgroud)
如果输入的数字总是7位或8位,您也可以使用
$str = ($input < 10000000) ? 0 . $input : $input;
Run Code Online (Sandbox Code Playgroud)
我进行了一些测试,得到的这个测试速度可以达到str_pad或者提高一倍sprintf.
如果输入可以有任何长度,那么您也可以使用
$str = substr('00000000' . $input, -8);
Run Code Online (Sandbox Code Playgroud)
这不如另一个快,但也应该比str_pad和它快一点sprintf.
顺便说一句:我的测试也表示比它sprintf快一点str_pad.我用PHP 5.6进行了所有测试.