【问题标题】:how to iterate through every x numbers and echo results in php?如何遍历每个 x 数字并在 php 中回显结果?
【发布时间】:2012-01-25 18:57:58
【问题描述】:

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

我希望我的结果类似于:

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 x 10 计数。

所以。第一条记录下面有 10 条其他记录,第二条记录还有 10 条,依此类推。

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

【问题讨论】:

  • 你真的想得到0000000001两次吗?
  • 第二组值迭代到什么?
  • 第二组值(中间的数字)是从 10 到 10。
  • 为什么0000000010在第一部分,而0000000020在第三部分?

标签: php for-loop iteration


【解决方案1】:

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

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.

【讨论】:

  • 很好,如果我希望每个子记录不是 10 条而是 100 条记录怎么办。比如0000000000 -&gt; 0000000001 ... 0000000100然后0000000001 -&gt; 0000000101 ... 0000000200等等
  • 我很确定您可以弄清楚,只需通读代码即可。特别是双循环解决方案非常简单。
  • +1 用于实施。 @Patrioticcow:我的回答可能会帮助您了解如何或在何处对清单 #1 进行调整。
【解决方案2】:

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

因此,您将 str_pad 行调整为缩进以及左侧填充为 0,并在循环顶部附近添加一个 lne 以检查是否 ($i % 10 == 0) (即,它是否可以被10 没有余数)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多