php foreach循环每2个元素包装一次,然后每3个元素包装一次

php foreach循环每2个元素包装一次,然后每3个元素包装一次,php,html,loops,foreach,Php,Html,Loops,Foreach,我试图将每两个元素包装在一个div中,然后将每三个元素包装在一个foreach循环中。我已经看过很多关于每2个或3个包装的帖子,但是我需要每2个和每3个包装的交替布局 这是我尝试使用的代码: <?php $row = 2; ?> <?php $count = 0; ?> <?php $i=1;foreach($list as $item) : ?> <?php if($count % $row =

我试图将每两个元素包装在一个div中,然后将每三个元素包装在一个foreach循环中。我已经看过很多关于每2个或3个包装的帖子,但是我需要每2个和每3个包装的交替布局

这是我尝试使用的代码:

<?php $row = 2; ?>
        <?php $count = 0; ?>
        <?php $i=1;foreach($list as $item) : ?>

            <?php if($count % $row == 0) : ## start 2 row ?>
                <?php $endrow = 1; ?>
                <div class="row double">
            <?php endif; ?>
                    <div class="col-lg-6 col-12">
                        aaa
                    </div>
            <?php if($count % $row == $endrow) : ## end 2 row ?>
                </div>
                <?php $i = 0; ?>
                <?php $row = 3; ?>
                <?php $endrow = 2; ?>
            <?php endif; ?>


            <?php if($count % $row == 0) : ## start 3 row ?>
                <?php $endrow = 2; ?>
                <div class="row triple">
            <?php endif; ?>
                    <div class="col-lg-4 col-12">
                        bbb
                    </div>
            <?php if($count % $row == $endrow) : ## end 3 row ?>
                </div>
                <?php $i = 0; ?>
                <?php $row = 2; ?>
                <?php $endrow = 1; ?>
            <?php endif; ?>


        <?php $count++;$i++;endforeach; ?>

aaa
bbb
这是输出:

<div class="row double">
    <div class="col-lg-6 col-12"> aaa </div>
<div class="row triple">
    <div class="col-lg-4 col-12"> bbb </div>
    <div class="col-lg-6 col-12"> aaa </div>
    <div class="col-lg-4 col-12"> bbb </div>
<div class="row double">
    <div class="col-lg-6 col-12"> aaa </div>
<div class="row triple">
    <div class="col-lg-4 col-12"> bbb </div>
    <div class="col-lg-6 col-12"> aaa </div>
    <div class="col-lg-4 col-12"> bbb </div>
<div class="row double">
    <div class="col-lg-6 col-12"> aaa </div>
<div class="row triple">
    <div class="col-lg-4 col-12"> bbb </div>
    <div class="col-lg-6 col-12"> aaa </div>
    <div class="col-lg-4 col-12"> bbb </div>
<div class="row double">
    <div class="col-lg-6 col-12"> aaa </div>
<div class="row triple">
    <div class="col-lg-4 col-12"> bbb </div>

aaa
bbb
aaa
bbb
aaa
bbb
aaa
bbb
aaa
bbb
aaa
bbb
aaa
bbb
但这正是我努力实现的目标:

<div class="row double">
    <div class="col-lg-6 col-12"> aaa </div>
    <div class="col-lg-6 col-12"> aaa </div>
</div>
<div class="row triple">
    <div class="col-lg-4 col-12"> bbb </div>
    <div class="col-lg-4 col-12"> bbb </div>
    <div class="col-lg-4 col-12"> bbb </div>
</div>
<div class="row double">
    <div class="col-lg-6 col-12"> aaa </div>
    <div class="col-lg-6 col-12"> aaa </div>
</div>
<div class="row triple">
    <div class="col-lg-4 col-12"> bbb </div>
    <div class="col-lg-4 col-12"> bbb </div>
    <div class="col-lg-4 col-12"> bbb </div>
</div>
<div class="row double">
    <div class="col-lg-6 col-12"> aaa </div>
    <div class="col-lg-6 col-12"> aaa </div>
</div>

aaa
aaa
bbb
bbb
bbb
aaa
aaa
bbb
bbb
bbb
aaa
aaa

任何帮助,或指向正确的方向都将不胜感激

使用嵌套循环。外部循环按5计数,然后是两个内部循环,分别打印两个元素和三个元素

$len = count($list);
for($i = 0; $i < $len; $i += 5) {
    echo '<div class="row double">';
    for ($j = $i; $j < min($len, $i+2); $j++) {
        echo '<div class="col-lg-6 col-12">' . $list($j) . '</div>';
    }
    echo '</div>';
    if ($j >= $len) {
        break;
    }
    echo '<div class="row triple">';
    for (; $j < min($len, $i + 3); $j++) {
        echo '<div class="col-lg-4 col-12">' . $list($j) . '</div>';
    }
    echo '</div>';
}
$len=count($list);
对于($i=0;$i<$len;$i+=5){
回声';
对于($j=$i;$j=$len){
打破
}
回声';
对于(;$j
非常感谢,这很有效-尽管第二个for循环缺少$j=$i:)但第二个循环不会从
$i
重新启动,而是从第一个循环结束时的
$j
值开始。