PHP的奇怪行为';s str_pad()和数字
PHP的奇怪行为';s str_pad()和数字,php,Php,$caseid通常是一个5位数字(可能更低)。我需要一个前导0,以便数字长度为6位: <?php $caseid=12345; echo str_pad(strval($caseid), 6-strlen(strval($caseid)), '0', STR_PAD_LEFT); ?> 它起作用了。这里的错误是什么?您不需要计算差异,只需输入所需的字符总数即可 str_pad(strval($caseid), 6, '0', STR_PAD_LEFT); 请参见功能原型: str
$caseid
通常是一个5位数字(可能更低)。我需要一个前导0,以便数字长度为6位:
<?php
$caseid=12345;
echo str_pad(strval($caseid), 6-strlen(strval($caseid)), '0', STR_PAD_LEFT); ?>
它起作用了。这里的错误是什么?您不需要计算差异,只需输入所需的字符总数即可
str_pad(strval($caseid), 6, '0', STR_PAD_LEFT);
请参见功能原型:
string str_pad (
string $input ,
int $pad_length
[, string $pad_string = " "
[, int $pad_type = STR_PAD_RIGHT ]]
)
用另一个字符串将一个字符串填充到某个长度
,$Pad_length表示所需的长度
我也曾为他的行为而烦恼。我厌倦了,回到了旧马厩
也许,这不是一个答案,但我希望它可能会对某些人有所帮助。如果您阅读了的文档,那么您将看到,如果第二个参数为负数,小于或等于第一个参数的长度,则不会出现填充。
stru pad
的第二个参数是pad\u length
。这是您希望返回的字符串的长度。你为什么要做6-strlen(strval($caseid))?这是1。根据“如果pad_length的值为负数,小于或等于输入字符串的长度,则不进行填充。”。
string str_pad (
string $input ,
int $pad_length
[, string $pad_string = " "
[, int $pad_type = STR_PAD_RIGHT ]]
<?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