选择从第2个开始的每第3个项目

时间:2014-03-18 16:20:22

标签: php

我有以下代码:

$loop = 0;
$columns = 3;

<?php while ( have_posts() ) :
    the_post();
    $loop++;
?>
<li class="<?php if ( $loop % $columns == 0) echo 'last'; if ( ( $loop - 1 ) % $columns == 0 ) echo 'first'; ?>">
</li>

我想要实现的目标是:

<li class="first"></li>
<li class="last"></li>
<li class="first"></li>
<li class=""></li>
<li class="last"></li>
<li class="first"></li>
<li class=""></li>
<li class="last"></li>

我得到的是(这是有道理的......):

<li class="first"></li>
<li class="=""></li>
<li class="last"></li>
<li class="first"></li>
<li class=""></li>
<li class="last"></li>
<li class="first"></li>
<li class=""></li>
<li class="last"></li>

意味着前2个分别是第一个和最后一个,然后是每个3.

如果我能够使用CSS我会说nth-child(3n + 2)但我不能因为我想分配一个新类,我只能用css指定一个样式。

我如何用php实现它?

1 个答案:

答案 0 :(得分:1)

以下将生成您提供的代码作为示例:

<?php
$loop = 0;
$offset = 2;

while ($loop < 100) {
    echo '<li class="';
    if ($loop < $offset) {
        if ($loop % 2 == 0) {
            echo 'first';
        } else {
            echo 'last';
        }
    } else {
        if (($loop - $offset) % 3 == 0) {
            echo 'first';
        } elseif (($loop - $offset + 2 ) % 3 == 0) { 
            echo '';
        } else {
            echo 'last';
        }
    }
    echo '"></li>';
    ++$loop;
}

如果$loop变量位于偏移量之下,则会交替打印firstlast,否则会检查3的可分性,为每个条件赋予分红额外的偏移量,以便它们将是true顺序。