我有以下代码:
$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实现它?
答案 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
变量位于偏移量之下,则会交替打印first
和last
,否则会检查3的可分性,为每个条件赋予分红额外的偏移量,以便它们将是true
顺序。