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行あるとしましょう。

15 から 12 を減算し、最後の 3 つの li に no border クラスを追加する php コードが必要です。

私の考え: $total を 6 に分割し、結果を切り上げることです。15:6 = 2.5 切り上げますが、小さい方の値を念頭に置くと、2 になります。

10 2 を 6 で乗算し、15 から 12 を引くと、3 行になります。

何か案は?

4

4 に答える 4

2

モジュラス演算子%は、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で割れるかどうかをチェックします。残りがなければ、最後の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 に答える