3

$caseid是(通常)一个 5 位数字(可能更低)。我想要一个前导 0,以便数字长 6 位:

<?php
$caseid=12345;
echo str_pad(strval($caseid), 6-strlen(strval($caseid)), '0', STR_PAD_LEFT); ?>

这不能按预期工作(显示相同的数字)。相反,如果我将 5 添加到 的第二个参数str_pad,它会起作用。

<?php echo str_pad(strval($caseid), 11-strlen(strval($caseid)), '0', STR_PAD_LEFT); ?>

有用。这里有什么错误?

4

3 回答 3

6

您无需计算只需输入您想要的总字符数的差异。

str_pad(strval($caseid), 6, '0', STR_PAD_LEFT);
于 2013-09-16T16:03:39.493 回答
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

也许,这不是一个答案,但我希望它可以帮助某人。

于 2013-09-16T16:08:42.983 回答
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 表示你想要的长度。

php.net 中的 str_pad

于 2013-09-16T16:08:40.773 回答