需要帮助改进foreach循环

时间:2010-10-14 16:51:43

标签: php

我写了这个逻辑,将一个数组循环到<li>

并给出#1和每5个一类“alpha”。

$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>添加一个“omega”类

2 个答案:

答案 0 :(得分:0)

现在,因为它代表你的代码将“alpha”类添加到从第一个开始的每个第四个项目,而不是每五个。换句话说,项目1,5,9,13等将具有“alpha”类,因为您的计数器从0开始。

我假设您想要将“omega”类添加到第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++; 
    } 

答案 1 :(得分:0)

你确实意识到,正如你所描述的那样,会有一些重叠吗? (例如 - 第30项是'第5'和第6')Brian给出了你所描述的答案,但我不确定它是否是你想要的。你想要ALPHA,x,x,x,OMEGA,ALPHA,x,x,x,OMEGA,ALPHA ......

你似乎想要5 * k + 1上的Alpha,以及5 * k上的Omega

条件:
alpha - ($ count + 1)%5 == 1
欧米茄 - ($ count + 1)%5 == 0

我认为分组加入会使这更容易理解,因为你的计数从0开始,但你似乎在考虑从1开始。如果你不喜欢,那么就输掉并改变等价分别为0和4 - $ count%5 == 0和$ count%5 == 4

我知道这更适合在最后一个答案下发表评论,但我不知道如何。直到我的声誉更高或者我错过了某些东西,我才被允许吗?&gt;