0

我有一个显示 li 元素的简单 for 循环。

for($rn = 1; $rn <= $total; $rn++){
 echo '<li>this is a li element</li>';

}

$total 代表有多少 li。

li 向左浮动,每行显示 6 li,每个 li 有一个底部边框。

我想,使用php通过添加一个跨度类来从最后一行的li中删除边框。

这有点棘手,因为假设我有 15 行。

我需要一个 php 代码,它将从 15 中减去 12 并将无边框类添加到最后 3 li's。

我的想法是:将 $total 除以 6 并将结果四舍五入。15:6 = 2.5 向上取整,但记住较小的值 - 将是 2。

10 将 2 乘以 6 并从 15 中减去 12,得到 3 行。

有任何想法吗?

4

4 回答 4

2

模运算符%通过两个数相除产生余数。

15 % 6 == 3
$totalRows % $itemsPerRow
于 2012-09-03T15:56:43.300 回答
0

我会这样解决它:

for($rn = 1, $end = ( 0 == ( $temp = $total % 6) ? $total - 6 : $total - $temp ); $rn <= $total; $rn++) {
    if ($end < $rn) {
        // no border
    }
}

基本上它检查它是否可以被6整除。如果没有休息,最后六个元素没有边框。如果有休息,则只有最后一行的元素没有边框。

优点是,它不会调用循环外的任何变量。

循环未经测试,计算已测试。

于 2012-09-03T16:01:27.490 回答
0
$remainder = $total % 6; // Get your remainder, number of li on the last row.

for($rn = 1; $rn <= $total; $rn++){
    // If the the total minus the number of li's output is less than or equal to remainder your outputting the last row.
    if($total - $rn <= $remainder) 
    {
        echo '<li class=\'borderless\'>this is a li element</li>';
    }else{
        echo '<li>this is a li element</li>';
    }
}
  • 请注意,这是未经测试的。
于 2012-09-03T16:01:53.947 回答
0
$bottom = $total % 6;
$bottom = $bottom ? $total - $bottom : $total - 6;//calculate values in the last row
for($rn = 1; $rn <= $total; $rn++){
    $class =  $rn > $bottom ? ' class="span"' : '';//if rn is in the last row add span calss
    echo "<li$class>this is a li element</li>";

}
于 2012-09-03T16:09:14.733 回答