循环后使用未知迭代关闭最后一个div(逻辑问题)

问题描述 投票:0回答:1

如果我在一个未知的迭代中有循环,你怎么能确保最后一个div在最后一次运行后被关闭?如果只是一种更有效的方法,我不确定我的逻辑是否正确。

例如,我需要6“sub-col”(可能在不同的szenario我只需要4或3“sub-col”)。 循环可以完全随机运行。

<?php

$loop_iteration = 0;

while ( have_posts() ) : the_post();

    if ( $loop_iteration % 6 == 0 ) {
        if ( $loop_iteration != 0 ) { echo '</div> <!-- sub-inner -->';echo '</div> <!-- sub-row -->'; }

        echo '<div class="sub-row row">';
        echo '<div class="sub-inner">';
    }

    echo '<div class="sub-col">';

    /* do stuff */

    echo '</div>';

    $loop_iteration++;

endwhile;

// here I also could make a function, but for demonstration I let it as 'if'
if (
    $loop_iteration % 6 == 1
    ||  $loop_iteration % 6 == 2
    ||  $loop_iteration % 6 == 3
    ||  $loop_iteration % 6 == 4
    ||  $loop_iteration % 6 == 5
) {
    echo '</div> <!-- sub-inner -->';
    echo '</div> <!-- sub-row -->';
}

?>

相同的循环,不同的检查

<?php

$loop_iteration = 0;
$div_status     = 'close';

while ( have_posts() ) : the_post();

    if ( $loop_iteration % 6 == 0 ) {
        if ( $loop_iteration != 0 ) { echo '</div> <!-- sub-inner -->';echo '</div> <!-- sub-row -->'; }

        echo '<div class="sub-row row">';
        echo '<div class="sub-inner">';
        $div_status = 'open';
    }

    echo '<div class="sub-col">';

        /* do stuff */

    echo '</div>';

    $loop_iteration++;

endwhile;

if ( $div_status == 'open' ) {
    echo '</div> <!-- sub-inner -->';
    echo '</div> <!-- sub-row -->';
}

?>

谢谢。

php html
1个回答
0
投票

只需在循环外移动打开和关闭的标签:

$loop_iteration = 0;

while ( have_posts() ) : the_post();
    if ($loop_iteration !== 0) {
        echo '</div> <!-- sub-inner -->';
        echo '</div> <!-- sub-row -->';
    }
    echo '<div class="sub-row row">';
    echo '<div class="sub-inner">';
    echo '<div class="sub-col">';

    /* do stuff */

    echo '</div>';

    $loop_iteration++;

endwhile;

if ($loop_iteration > 0) {
    echo '</div> <!-- sub-inner -->';
    echo '</div> <!-- sub-row -->';
}
© www.soinside.com 2019 - 2024. All rights reserved.