2016-02-14 34 views
2
$i = 0; 

while ($have_something) { 

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

問題與此代碼時出現在while環路項目的數量是動態的,變化regulary,還當它可能有幾百個項目,這意味着if發言會很長。做每X項目的東西在while循環

如何克服這個問題,並「自動化」它,這樣的東西每X項和別的東西,其餘情況沒有硬編碼$i計數?

+3

使用''%操作。 –

+0

這是偶然的,任何與着色表格行或類似的事情? – RamRaider

+0

@RamRaider不要,只是一堆文章的縮略圖。我試圖通過改變每個X元素的東西使它變得無趣。是否可以使用'%'操作符:1.是黑色,2.和3.白色,4.黑色,5.和6.和7.和8.白色,9.黑色,然後重複第二個? – Solo

回答

6

使用模運算符%

$i = 0; 

while ($have_something) { 

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

,或者稍微整齊一些,也許'$ color =($ i%3 == 0)? 'black':'white';' – RamRaider

+0

當然...取決於實際代碼的數量,即執行。但我認爲,使用'if'可以更好地得到這個答案的要點。 – Sirko

+1

@RamRaider少一些並不總是更多。 –

0

使用PHP生成什麼,我認爲將是一個類或內嵌色彩定義是純粹的CSS使用nth-of-type(3n)樣式選擇的替代方案。

<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可能