对while循环中的每个X项执行某些操作

时间:2016-02-14 08:37:07

标签: php while-loop

$i = 0;

while ($have_something) {

    if($i == 0 || $i == 3 || $i == 6 || $i == 9) {
        $color = 'black';
    }
    else {
        $color = 'white';
    }
    $i++;
}

while循环中的项目计数是动态的并且变化规则时,此代码出现问题,当它可能有数百个项目时,这意味着if语句将非常长。

如何克服这个问题并“自动化”它以便每个 X 项目都会发生某些事情而其余的事情没有硬编码$i计数?

2 个答案:

答案 0 :(得分:6)

使用模数运算符%

$i = 0;

while ($have_something) {

    if($i % 3 == 0 ) {
        $color = 'black';
    }
    else {
        $color = 'white';
    }
    $i++;
}

答案 1 :(得分:0)

使用php生成我认为的类或内联颜色定义的替代方法是使用nth-of-type(3n)样式选择器纯​​粹在css中。

<style>
    #rep{ width:80%; float:none; margin:5rem auto; box-sizing:border-box; padding:1rem; }
    #rep div{ width:100%; float:none; margin:0.1rem auto; box-sixing:border-box; border:1px solid black; }
    #rep div:nth-of-type(2n){ background:whitesmoke; }
    #rep div:nth-of-type(3n){ background:gray; }
    #rep div:nth-of-type(4n){ background: #f0ffff; }
    #rep div:nth-of-type(5n){ background: #f0fff0; }
    #rep div:nth-of-type(6n){ background: #e0ffff; }
    #rep div:nth-of-type(7n){ background: #f0f8ff; }
    #rep div:nth-of-type(8n){ background: #e6e6fa; }
    #rep div:nth-of-type(9n){ background: #b0e0e6; }
</style>

echo "<div id='rep'>";
for( $i=0; $i < 30; $i++ ) echo "<div>$i</div>";
echo "</div>";

无论如何,只是一个想法!

或者,更好的css选择器可能是nth-child #rep div:nth-child(3n){background:black;}

如果您对此技术感兴趣,那么可能是handy guide