如何迭代每个x数字和回声结果在PHP?

时间:2012-01-25 18:57:58

标签: php for-loop iteration

问题标题可能有点混乱。但这是我的情况。

我希望我的结果像:

0000000000
    0000000001
    0000000002
    0000000003
    0000000004
    0000000005
    0000000006
    0000000007
    0000000008
    0000000009
    0000000010
0000000001
    0000000011
    0000000012
    0000000013
    0000000014
    0000000015
    0000000016
    0000000017
    0000000018
    0000000019
0000000002
    0000000020
    0000000021
    0000000022
    0000000023
    ...
0000000003
    ...
0000000004
    ...

我可以通过这样做得到第一个数字:

for ($i = 1; $i<=10; $i++){
    $nr=str_pad($i, 10, "0", STR_PAD_LEFT);
    echo $nr.'<br>';
}

但是我如何得到中间的数字呢?

任何想法?

由于

编辑:第二行数字基于10乘10计数。

如此。第一个记录下面会有10个其他记录,第二个记录会另外记录10个,依此类推。

我已尝试使用$floor= floor($i/10);并将其添加到此处的第二组记录中:$nr=str_pad($floor, 10, "0", STR_PAD_LEFT);

2 个答案:

答案 0 :(得分:3)

我不太明白你想做什么。但一种可能的解决方案是:

for ($i = 1; $i < 100; $i++){

    if ($i % 10 == 1)
        echo str_pad(($i-1)/10, 10, "0", STR_PAD_LEFT) . "<br />\n";

    echo '    '.str_pad($i, 10, "0", STR_PAD_LEFT) . "<br />\n";
}

in action

根据您的问题,使用两个周期可能更适合您:

for ($i = 0; $i < 10; $i++){

    echo str_pad($i, 10, "0", STR_PAD_LEFT) . "<br />\n";

    for ($j = 1; $j <= 10; $j++) {
        echo '    '.str_pad($i*10+$j, 10, "0", STR_PAD_LEFT) . "<br />\n";
    }
}

Live

答案 1 :(得分:0)

这看起来像家庭作业,但我会按照描述更改你的循环来迭代次要号码,然后使用MOD(http://php.net/manual/en/internals2.opcodes.mod.php)之类的测试来检查你想要发出第一级的那些时间分组。

所以你调整你的str_pad行缩进以及左边的垫子为0,并在循环顶部附近添加一个lne来检查是否($ i%10 == 0)(也就是说,如果它可被整除10没有余数)。

请注意,这可能不是最快,也不是最优雅的方式。