我有一个包含值1234567的变量。
我希望它包含正好8位数,即01234567。
那有PHP功能吗?
使用sprintf:
sprintf('%08d', 1234567);
或者,您也可以使用str_pad:
str_pad($value, 8, '0', STR_PAD_LEFT);
只想添加:str_pad不是带负数的选项
只是添加wtf8_decode所说的内容;负数不会有前导零,而且它们不是正数。即08将被写为日期,或者需要正两位数的东西(银行账户排序代码等)。如果我错了,请纠正我,但据我所知,没有现实生活中要求负值的前导零?
想要添加sprintf('%+03d:00 UTC',$i),其中$i是-12到12,将根据需要打印+或 - 并且还将为小于2位的数字设置前导零。非常适合在HTML中创建时区SELECT。
对于当前版本(7.1)和低级sprintf(3v4l.org/junvv/perf#output)比str_pad(3v4l.org/cliNP/perf#output)快一点
09和08在PHP7中不起作用
什么时候负数可能需要一个前导零...一个三位数的升降计数器? T-010,T-009,T-008等
请注意,变量类型转换在这里发挥作用。当我将带有前导零的sprintf整数与前导字符串($new = 'PT'.$integerWithZeroes)连接在一起时,它将零表示为空格。当我使用str_pad创建$integerWithZeroes时,一切运行良好。即PT00000001