【问题标题】:Loop Removes Zero Before Integer [duplicate]循环在整数之前删除零[重复]
【发布时间】:2017-04-14 19:19:33
【问题描述】:

如果我的循环运行 3 次,则输出为 0001,2,3,但我需要

0001
0002
0003  

我如何得到这个输出?

$i='0001';
foreach($test as $rows){
    echo $i; 
    echo '<br/>';
    $i++;
}

【问题讨论】:

  • $i = 1开头,然后您可以在需要显示它们时添加前导零。

标签: php


【解决方案1】:

使用printf填充说明符,例如:

$test = range(1,11);

$i = 0;
foreach ($test as $rows) {
  printf("%04d<br/>\n", ++$i);
}

输出

0001<br/>
0002<br/>
0003<br/>
0004<br/>
0005<br/>
0006<br/>
0007<br/>
0008<br/>
0009<br/>
0010<br/>
0011<br/>

在本例中,04 是一个填充说明符,表示数字 (d) 最多填充 4 个零。

【讨论】:

  • 尽其所能,我会说。
【解决方案2】:

你可以作弊一点,

$i = "1";
$y = "000"; //Added this

while ($i < 4){
    echo $y . $i;
    $i++;
}

基本上你每次都在数字前面回显 000。

【讨论】:

  • 好吧.. 如果循环运行超过 9 次,结果将变成类似于 '00010' 的东西,这可能不是 OP 想要的。 Ruslans 的答案可能更适合 OP 的需求。编辑:好吧,我刚刚意识到 Ruslans 的答案也会输出 00010 。 (edit2:不是在他的编辑之后)
  • 如果 ($i >= 10){做某事}。但你可能是对的:)
  • 不是一个很好的解决方案。
  • 没错,但它是一个。我认为鲁斯兰的回答是最好的。
【解决方案3】:

您可以使用str_pad()

$i = "0001";
for($j=0;$j<1000;$j++) {
  echo str_pad($i++, 4, '0', STR_PAD_LEFT);
  echo "<br/>";
}

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 2018-02-15
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2017-12-22
    相关资源
    最近更新 更多