在while循环中包装项目

时间:2012-12-30 15:48:24

标签: php wordpress loops while-loop

我想在每两个项目后的while循环中添加一个div标记。

我正在尝试使用以下代码,但最后会添加一个空的<div></div>

$i = 0;
while ( have_posts() ) : the_post();
    $i++;   
    if ($i == 1){$output .= "<div>";}

    if ($i % 2 == 0){$output .= "</div><div>";}

    endwhile;
if ($i % 2 != 0){$output .= "</div>";}

2 个答案:

答案 0 :(得分:1)

尝试在下一次迭代开始时添加额外的</div><div>

$i = 0;
$div = '';
while ( have_posts() ) : the_post();
    $i++;
    $output .= $div;
    if ($i == 1){$output .= "<div>";}

    if ($i % 2 == 0){$div = "</div><div>";}
    else {$div = '';)

    endwhile;
if ($i % 2 != 0){$output .= "</div>";}

答案 1 :(得分:1)

您需要更多地包装逻辑。因为如果您有0个元素,则不需要任何包装。如果你有偶数元素,那么最后你不需要额外的包装。

我在这里添加了两个新功能,我认为它们的功能很明确:div_open()div_close()。然后,您的伪代码的以下修改应概述它的工作原理:

if ( have_posts(  ) )
{

    div_open(  );

    for ($counter = 0; have_posts(  ); $counter++)
    {

        the_post(  );

        ...

        if ( $counter && have_posts(  ) && $counter % 2 == 0 )
        {

            div_close(  );

            div_open(  );

        }

    }

     div_close(  );

}