0

我需要为 foreach 循环中的每 6 个 div 赋予不同的类名。我认为我下面的想法会奏效,但每个项目似乎都有相同的 div。

<?php $num = 0; ?>
<?php foreach ($divs as $div): ?>

    <?php if($num % 1 == 0): ?>
    <div class="threecol grey one">
    <?php elseif($num % 2 == 1): ?>
    <div class="threecol green two ">
    <?php elseif($num % 3 == 2): ?>
    <div class="sixcol blue last three">
    <?php elseif($num % 4 == 3): ?>
    <div class="threecol grey">
    <?php elseif($num % 5 == 4): ?>
    <div class="sixcol blue">
    <?php elseif($num % 6 == 5): ?>
    <div class="threecol green last">
    <?php endif; ?>

        Rest of html

    </div>

<?php $num++ ?>
<?php endforeach; ?>

为了简化我基本上需要

1st/7th/13th/19th ...等 div 是<div class="threecol grey">

2日/8日/14日/20日...等<div class="threecol green">

3日/9日/15日/21日...等<div class="sixcol blue last">

4日/10日/16日/22日 <div class="threecol grey">

5日/11日/17日/23日 <div class="sixcol blue">

6日/12日/18日/24日 <div class="sixcol blue">

4

4 回答 4

1

很丑……为什么不呢

$classes = array('grey one', 'green two', 'blue last three', 'grey', 'blue', 'green last');
foreach($divs as $div) {
   $class = $classes[$i++ % 6];
   echo '<div class="threecol ' . $class . '">';
}

主要问题是您在模运算中不断更改除数,因此您总是得到 0 余数。

于 2013-01-14T18:57:49.483 回答
1

您误解了导致剩余股息的模运算符。因此,% 1始终为零,因为该操作永远不会有余数。你想这样做:

$num % 6 == 1
...
$num % 6 == 2

等等。您也可以$num % 6提前做并将其存储在变量中。

于 2013-01-14T18:59:25.683 回答
0
<?php foreach ($divs as $i => $div): ?>
    <?php if($i % 6 == 0): ?>
    <div class="threecol grey one">
    <?php elseif($i % 6 == 1): ?>
    <div class="threecol green two ">
    <?php elseif($i % 6 == 2): ?>
    <div class="sixcol blue last three">
    <?php elseif($i % 6 == 3): ?>
    <div class="threecol grey">
    <?php elseif($i % 6 == 4): ?>
    <div class="sixcol blue">
    <?php elseif($i % 6 == 5): ?>
    <div class="threecol green last">
    <?php endif; ?>
        Rest of html
    </div>
<?php endforeach; ?>

考虑使用 switch case 语句。

于 2013-01-14T18:59:04.167 回答
0
<?php if(floor($num / 6) == 0): ?>
<div class="threecol grey one">
<?php elseif(floor($num / 6) == 1): ?>
<div class="threecol green two ">
<?php elseif(floor($num / 6) == 2): ?>
<div class="sixcol blue last three">
<?php elseif(floor($num / 6) == 3): ?>
<div class="threecol grey">
<?php elseif(floor($num / 6) == 4): ?>
<div class="sixcol blue">
<?php elseif(floor($num / 6) == 5): ?>
<div class="threecol green last">
<?php endif; ?>

这将给出:

  • threecol grey one对于从 0 到 5 的列
  • threecol grey two用于从 6 到 11 的列
  • ETC..
于 2013-01-14T18:57:10.540 回答