2017-09-03 39 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'; 
相关问题