这是我的代码:
<?php
$variable1 = 00001;
$variable2 = (sprintf('%04d', $variable1 + 1));
echo $variable2;
?>
为什么这段代码的结果是“0002”而不是“00002”?换句话说,它缺少一个0。
答案 0 :(得分:7)
4 in%04d设置打印值的总宽度
答案 1 :(得分:4)
第一个参数中的数字是“总字符数”,而不是填充中使用的零数。你要找的是%05d。
答案 2 :(得分:1)
一个更有趣的问题是为什么以下打印'0009'而不是'0011'?
<?php
$var = 0010;
$str = sprintf('%04d', $var+1);
echo $str;
?>
那你为什么要使用八进制表示呢?我只是好奇。