Как перебирать каждые x чисел и выводить результаты в php? - PullRequest
0 голосов
/ 25 января 2012

название вопроса может быть немного запутанным.но вот мой случай.

Мне бы хотелось, чтобы мой результат выглядел примерно так:

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>';
}

но тогда как мне получить числа между ними?

есть идеи?

Спасибо

edit: вторая строка чисел основана на 10 на 10.

т.первая запись будет иметь 10 других записей, вторая запись еще 10 и т. д.

я пробовал что-то, используя $floor= floor($i/10); и добавляя это ко второму набору записей здесь: $nr=str_pad($floor, 10, "0", STR_PAD_LEFT);

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Я не совсем понимаю, что вы пытаетесь сделать.Но одним из возможных решений было бы следующее:

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";
}

Посмотрите на это в действии .

В зависимости от вашей проблемы, вам может быть лучше использовать два цикла:

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 .

0 голосов
/ 25 января 2012

Это похоже на домашнее задание, но я бы изменил ваш цикл, как описано, для итерации вторичных чисел, а затем использовал бы тест, такой как MOD (http://php.net/manual/en/internals2.opcodes.mod.php), для проверки тех времен, когда вы хотите испустить первыйгруппировка уровней.

Таким образом, вы настраиваете строку str_pad для отступа, а также для левой панели с 0, и добавляете lne в верхней части цикла, чтобы проверить, является ли ($ i% 10 == 0) (то есть, если он делится на 10 без остатка).

Обратите внимание, что это может быть не самый быстрый и не самый элегантный способ.

...