PHP printf()用负数填充数字


PHP printf() digit padding with a negative number

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

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

我做错什么了吗?还是一个bug?

每个文档:

  • http://www.php.net/manual/en/function.sprintf.php

填充应用于整个字符串:

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

(重点是我的)。

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

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

从技术上讲,这是正确的,因为您指定了两个数字,减号代表其中一个数字。如果您使用

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

你会得到-06。

"-"算作一个字符,因此需要使用%03d。

我不认为这是一个错误,因为在处理具有固定长度(如字符)的字段时经常使用0填充,所以如果%02d生成一个包含3个字符的数字,天空可能会塌下来。