2012-02-19 58 views
0

我在php中有一個數組,我想從(n-15)一次打印15個數組的元素。就像,如果我有一個數組的100個元素,我想打印85-100,70-84,55-70 ,,等,Php nestedfor循環

我試過循環

for($j = sizeof($fields)-16; $j < sizeof($fields);) { 
for ($i = $j ; $i < $i+16 ; $i++ ) { 
echo $fields[$i]; 
echo "<br>"; 
} 
$j=$j-16; 
} 

但,這將只打印第一個遊程,即85-100,並進入無限循環。

我哪裏錯了? 幫助!

回答

1

在PHP 5.3,你可以這樣做:

<?php 
$fields = range(1, 100); 

foreach (array_chunk(array_reverse($fields, true), 15, true) as $i => $chunk) { 
    echo 'Group ' . $i . ":<br/>\n"; 
    $chunk_rev = array_reverse($chunk, true); 
    array_walk($chunk_rev, function($value) { 
    echo "$value<br/>\n"; 
    }); 
} 

demo

2
foreach (array_reverse(array_chunk($fields, 15)) as $chunk) { 
    foreach ($chunk as $field) { 
    echo $field . '<br />'; 
    } 
} 
+0

塊是完美的,但我如何實現打印從n-15到n等? – user996853 2012-02-19 21:32:54

+0

這是內部迭代,還是什麼問題?什麼是'n'?更新:我是否正確,您是否希望最後處理最後一個塊?我已經添加了'array_reverse()'。 – KingCrunch 2012-02-19 21:38:16

+0

完美的作品!謝謝 – user996853 2012-02-19 21:53:48

0

想想循環終止條件。

如果$ j遞減並且$ j開始低於比較值,那麼$ j永遠不會比比較值大,因此循環永遠不會終止。