2010-10-14 147 views
0

我已经这个逻辑写入的循环出的数组成<li>帮助需要改善foreach循环

并给出#1和每第五类的“阿尔法”。

$count = 0; 

     foreach($gallery->data as $row){ 

      if ($count==0 || $count%4==0) { 
       echo '<li class="alpha"></li>'.PHP_EOL; 
      } else { 
       echo '<li></li>'.PHP_EOL; 
      } 

      $count++; 
     } 

我需要添加到这一点,得到的代码添加类“欧米茄”,以每4个<li>

+1

你不需要'如果$ count == 0'。 if语句的第二部分已经将'alpha'添加到索引0处的第一个元素。 – meagar 2010-10-14 16:56:27

回答

0

你一定要明白,当你形容的话,会有一些重叠吗? (例如 - 第30项既是'第5'也是'6')Brian给你一个你确切描述的答案,但我不确定它是否是你想要的。你想要ALPHA,x,x,x,OMEGA,ALPHA,x,x,x,OMEGA,ALPHA ......

你似乎想要5 * k + 1上的Alpha和5 * ķ

条件:
α - ($计数+ 1)%5 == 1
Ω - 我认为在除了分组($计数+ 1)%5 == 0

使这更容易要明白,因为你的计数从0开始,但你似乎是从1开始考虑的。如果你不喜欢这样,那么失去这个加法并分别将等价变为0和4 - $ count%5 == 0和$ count%5 == 4

我知道这是更适合评论下最后的答案,但我不知道如何。我是否被允许,直到我的声望更高,或者我只是错过了什么?>

+0

谢谢为你的输入乔恩,这似乎已经做到了! – Plasticated 2010-10-14 18:40:12

+0

没问题。很高兴我能帮上忙,而且我只是想得到我的第一个批准答案 – 2010-10-14 19:28:01

0

现在,因为它代表你的代码将“阿尔法”级每第四项目从第一个开始,而不是每五分之一。换句话说,项目1,5,9,13等将有一类“阿尔法”,因为你的计数器从0开始。

我假设你想添加“欧米茄”类然后到项目4 ,8,12,等等。这里就是你需要做的是:

$count = 0; 

    foreach($gallery->data as $row){ 

     if ($count%4==0) { 
      echo '<li class="alpha"></li>'.PHP_EOL; 
     } 
     else if ($count%4==3) { 
      echo '<li class="omega"></li>'.PHP_EOL; 
     } 
     else { 
      echo '<li></li>'.PHP_EOL; 
     } 

     $count++; 
    } 
+0

就是这样。对不起,我想我已经混在一起了! – Plasticated 2010-10-14 17:08:01

+0

所以我可以更好地理解这是如何工作的,你能解释一下我会改变什么来调整顺序。例如:1号和6号,每5号欧米茄? – Plasticated 2010-10-14 17:30:05

+1

当你有表达式a%b时,%运算符给出了除以b的余数。在你的情况下,你使用从$ count%4获得的值作为分组内的偏移量,当$ count%4 = 0时出现第一个项目,最后一个项目出现在$ count%4 = 3时。如果你想要要改变组的大小,同时仍然保留任意组大小为N的第一个/最后一个关系,第一个项目出现在$ count%N = 0并且最后一个项出现在$ count%N = N-1处。 – 2010-10-14 17:40:35