$caseid
(通常)是一个5位数字(可能更低)。我想要一个前导0,这个数字是6位数:
<?php
$caseid=12345;
echo str_pad(strval($caseid), 6-strlen(strval($caseid)), '0', STR_PAD_LEFT); ?>
这不能按预期工作(显示相同的数字)。相反,如果我向str_pad
的第二个参数添加5,它就可以工作。
<?php echo str_pad(strval($caseid), 11-strlen(strval($caseid)), '0', STR_PAD_LEFT); ?>
有效。这里有什么错误?
答案 0 :(得分:6)
您不需要计算您想要的总字符数的差异。
str_pad(strval($caseid), 6, '0', STR_PAD_LEFT);
答案 1 :(得分:1)
我曾被str_pad()
的行为所困扰。我厌倦了它,然后又回到了旧稳定的sprintf()
。
<?php
header('Content-Type: text/plain');
$test = [
1,
12,
123,
1234,
12345,
123456
];
foreach($test as $n){
echo sprintf('%06d' . PHP_EOL, $n);
}
?>
结果:
000001
000012
000123
001234
012345
123456
也许,这不是一个答案,但我希望它可以帮到某个人。
答案 2 :(得分:0)
参见函数原型:
string str_pad (
string $input ,
int $pad_length
[, string $pad_string = " "
[, int $pad_type = STR_PAD_RIGHT ]]
)
Pad a string to a certain length with another string
,$ pad_length表示您想要的长度。