sprintf结果问题

时间:2009-04-06 16:12:08

标签: php formatting printf

这是我的代码:

<?php
$variable1 = 00001;
$variable2 = (sprintf('%04d', $variable1 + 1));
echo $variable2;
?>

为什么这段代码的结果是“0002”而不是“00002”?换句话说,它缺少一个0。

3 个答案:

答案 0 :(得分:7)

4 in%04d设置打印值的总宽度

答案 1 :(得分:4)

第一个参数中的数字是“总字符数”,而不是填充中使用的零数。你要找的是%05d。

答案 2 :(得分:1)

一个更有趣的问题是为什么以下打印'0009'而不是'0011'?

<?php
$var = 0010;
$str = sprintf('%04d', $var+1);
echo $str;
?>

那你为什么要使用八进制表示呢?我只是好奇。