2017-09-03 40 views
0

我想弄清楚如何編寫一個將包裝每個3個元素組的循環。然而,最後一次迭代,應該換什麼是左(它是一個,兩個或三個元素)PHP:包裝3個元素的每個組

所以基本上,這種模式:

div 
do stuff 
do stuff 
do stuff 
end-div 
div 
do stuff 
do stuff 
do stuff 
end-div 
div 
do stuff 
do stuff 
do stuff 
end-div 
div 
do stuff 
end-div 

這是我在哪裏至今:

<?php 

    $counter = 0; 

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

    if (($counter + 1) % 3 == 0) { 
     echo 'div <br />'; 
    } 
    echo 'do stuff <br />'; 
    if (($counter + 1) % 3 == 0) { 
     echo 'end-div <br />'; 
    } 

    $counter ++; 
    } 

?> 

這是給我下面的:

do stuff 
do stuff 
div 
do stuff 
end-div 
do stuff 
do stuff 
div 
do stuff 
end-div 
do stuff 
do stuff 
div 
do stuff 
end-div 
do stuff 

任何人都可以看到我要去哪裏錯了嗎?

回答

0

換句話說,你需要在每個組的三個項目後寫div每組三個項目之前和end-div

// $counter always tells the number of processed items 
$counter = 0; 

for ($i = 1; $i <= 10; $i++) { 
    // before a group of three, $counter is a multiple of three 
    if ($counter % 3 == 0) { 
     echo 'div <br />'; 
    } 

    // process the item then count it 
    echo 'do stuff <br />'; 
    $counter ++; 

    // after a group of three, $counter is a multiple of three 
    if ($counter % 3 == 0) { 
     echo 'end-div <br />'; 
    } 
} 

// close the last group if it is not complete 
if ($counter % 3 != 0) { 
    echo 'end-div <br />'; 
} 
+0

作品完美,謝謝! – pealo86

0

有沒有必要使用單獨的$counter變量,利用$i變量在for循環本身。

echo 'div <br />'; 
for ($i = 0; $i < 10; $i++) { 
    if($i != 0 && $i % 3 == 0) 
     echo 'end-div <br /> div <br />'; 
    echo 'do stuff <br />'; 
} 
echo 'end-div'; 
相關問題