1

We've been switching between an odd/even classes during a foreach loop like this:

<?php
  $count = 0;
  foreach ($pages as $page) { ?>

   <div class="row <php echo (++$count%2 ? "odd" : "even") ?>">
     ...page_list or product_list output
   </div>

<php } ?>

But how would we switch between 3 or more css classes?

Any pointers in the right direction would be much appreciated.

Cheers

Ben

4

6 回答 6

2

将它们放入一个数组并使用模运算符:

<?php
  $count = 0;
  $classes = array('one', 'two', 'three');

  for ($i = 0; $i < 10; $i++) {
    $count = ++$count % count($classes);
    $class = $classes[$count];
  ?>

   <div class="row <?php echo $class ?>">
     ...
   </div>

<?php } ?>
于 2013-03-08T04:03:04.390 回答
1

如果要保留相同的结构,可以嵌套三元组。

echo (++$count%3==0 ? "3" : ($count%3==1 ? "3+1" : "3+2"))
于 2013-03-08T04:00:36.497 回答
1

如果数组键对是数字,您可以只使用带有 key => value 输出的 foreach 循环并使用numbulus 运算符评估键。然后在switch 语句中使用结果。

如果数组键不是数字,您可以在 foreach 循环之前设置一个变量,并在每次迭代时递增它并检查它的值..

<?php
$pages = Array('page1', 'page2', 'page3');

foreach ($pages as $key => $page) :

  switch ( $key % 3 ) { (3 is the number of available cases)
    case 0:
      $class = 'class1';
      //…
      break;
    case 1:
       $class = 'class2 foo';
       //…
      break;
    case 2:
      $class = 'bar';
      //…
      break;
  endswitch;

  echo '<div class="' . $class . '">';
  //…
  echo '</div>';

endforeach;
?>
于 2013-03-08T04:02:28.583 回答
0

切换多个 css 的最佳方法是使用

控制结构切换语句

于 2013-03-08T03:59:15.637 回答
0

class1,class2class3

<?php
  $count = 0;
  foreach ($pages as $page) {
  $count = $count == 3 ? 0 : $count++;
?>
   <div class="row <?php echo "class".$count ?>">
     ...page_list or product_list output
   </div>
<?php } ?>
于 2013-03-08T04:02:36.383 回答
0

可以使用 if else 语句并确保更改 mod 编号。

尝试这个:

        <div class="row 
    <php
        ++$count;
        if($count % 3 == 0)
        {
            echo "style2";
        }
        else if($count % 3 == 1)
        {
            echo "style2";
        }
        else
        {
            echo "style3";
        }
    ?>
    ">
    ...page_list or product_list output
    </div>

<php } ?>
于 2013-03-08T04:04:07.803 回答