从0000开始递增数字的PHP实现方法

13

我需要一个 PHP 计数器函数的建议。是否有函数可以生成 5 位数字,例如 00001、00123 等等?这些数字不应该是随机的,而是要增加先前字段的值。

如果一个数字是 $n='00001',有一个函数可以将其增加一倍并获得 00002 而不是 2 吗?

谢谢 F.


1
为什么不直接在前面填充零呢? - j08691
正如 @j08691 建议的那样,使用 int 类型,需要以此格式显示时再进行填充。 - Tony Hopkinson
如果您从一个已经有前导零的字符串开始,您可以使用 $new = str_pad(ltrim($old, '0') + 1, 5, '0', STR_PAD_LEFT); - 请注意,如果直接将带有前导零的字符串转换为整数,则可能产生您不希望得到的结果,它可能被视为八进制。不要低估 PHP 的 ++ 自增运算符,它非常聪明,实际上可以处理字母和数字,就像 这个例子 - DaveRandom
1
你也可以使用sprintf函数。 $n = sprintf('%1$05d', $number); - Gerald Degeneve
经验之谈:只有在最后一刻(当您向用户显示数据时)才进行格式化。 - JJJ
4个回答

32
$n2 = str_pad($n + 1, 5, 0, STR_PAD_LEFT);

使用str_pad(),在旧数字$n加1(第一个参数)的基础上,在左侧(第四个参数)添加0第三个参数),直到长度为5(第二个参数)。


4
$number = 1;
$number++;
echo str_pad($number, 5, "0", STR_PAD_LEFT);  //00002

4

作为另一种选择,如果您感兴趣的话,可以使用 sprintf 轻松地将其填充到特定数量的0。

$numbers = array(0,1,11,111,1111,11111,11111);
$padded  = array();
foreach($numbers as $num)
  $padded[] = sprintf('%1$05d', ++$num);

print_r($padded);

PHP几乎总是有多种方式来完成相同的事情。 :)


2

你需要使用str_pad()函数在索引前添加前导零。

$new_index = str_pad($index, 5, "0", STR_PAD_LEFT);

$index是循环中递增的索引,$new_index是带有前导零的索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接