带有负数的PHP printf()数字填充

时间:2012-02-24 00:54:36

标签: php printf

当我输入带有负参数的printf()时,整数占位符为零填充。零填充不会应用。

php > printf('%02d', -6);
-6

我做错了吗?或者这是一个错误?

3 个答案:

答案 0 :(得分:3)

每篇文档:

paddings应用于整个字符串:

  

一个可选的填充说明符,用于说明将结果填充到右侧字符串大小的字符。这可以是空格字符或0(零字符)。默认是使用空格填充。可以通过在其前面加上单引号(')来指定备用填充字符。请参阅以下示例。

(强调我的)。

如果可以接受,您可能需要使用符号说明符,例如:

php > printf('%+03d', -6);
-06
php > printf('%+03d', 6);
+06

答案 1 :(得分:1)

从技术上讲,它是正确的,因为你指定了2位数,而减号则占其中一位数。如果你使用

printf('%03d', -6); 

你会得到-06。

答案 2 :(得分:1)

“ - ”计为字符,因此您需要使用%03d。

我不相信这是一个错误,因为在处理具有设定长度的字段时经常使用0填充,如字符,因此如果%02d产生一个包含3个字符的数字,则天空可能会下降。