为什么 sprintf() 中的 %04d 将输出截断为 4 位数字?

问题描述 投票:0回答:3

这是我的代码:

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

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

php formatting printf truncation
3个回答
6
投票

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


4
投票

第一个参数中的数字是“字符总数”,而不是填充中使用的零的数量。 您正在寻找的是%05d。


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.