2012-01-25 36 views
0

問題標題可能有點混亂。但這是我的情況。如何在php中迭代每個x數字和echo結果?

我想我的結果像這樣的:

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);

+0

你真的想要'0000000001'兩次嗎? – erisco

+0

迭代的第二組值是什麼? – Josh

+0

第二組數值(中間的數字)爲10至10. – Patrioticcow

回答

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

+0

不錯,如果我想要每個子記錄有10個,但沒有100個記錄。像'0000000000 - > 0000000001 ... 0000000100'然後'0000000001 - > 0000000101 ... 0000000200'等等 – Patrioticcow

+0

我很肯定你可以弄清楚,只需通讀代碼即可。特別是雙週期解決方案非常簡單。 – Czechnology

+0

+1執行。 @Patrioticcow:我的回答可能會幫助您瞭解如何或在何處進行第1項調整。 – horatio

0

這看起來像家庭作業,但我會改變你的循環描述迭代次要的數字,然後使用測試,如MOD(http://php.net/manual/en/internals2.opcodes.mod.php)來檢查你想要發出第一級分組的時間。

所以你調整你的str_pad行爲縮進以及左邊填充0,並在循環頂部附近添加一個lne來檢查是否($ i%10 == 0)(也就是說,如果它是可以整除的減10)。

請注意,這可能不是最快也可能不是最優雅的方式。

相關問題