2012-05-15 33 views
-1

我有一個顯示<li>一個循環的,我需要一個類添加到第1次,然後每六個<li>PHP李計師

例子:

while ($db_field = mysql_fetch_assoc($result)) { 

    <li (if mod of 6 add class="something")>One</li> 
    <li>Two</li> 
    <li>Three</li> 
    <li>Four</li> 
    <li>Five</li> 
    <li class="something">Six</li> 
    <li>Seven</li> 

} 
... 
+0

是未來的動態? – diEcho

+0

是的,它從數據庫中讀取記錄 – Satch3000

+2

'IF($ i%6 == 0)add the class' – Shubham

回答

4

它使用是很容易的的操作者modulus %

$counter = 0; 
while ($r = mysql_fetch_assoc($res) { 
    $isSixthsLi = (bool) (($counter++) % 6 == 0); 
    echo $isSixthsLi ? '<li class="something">' : '<li>'; 
    echo htmlentities($r['content']); 
    echo '</li>'; 
} 

($counter++) % 6表達意味着所述的$計數器剩餘除以6,然後增加$ counter。如果餘數爲零(對於0,6,12,...這是正確的),那麼您用類名打印<li>,否則您沒有。

+0

'$ count ++'的括號是多餘的。並圍繞着比較。哦,一個'!'本來可以做到的。 – hakre

+0

@hakre我知道,但我總是寫出比必要的更多的括號,尤其是當我使用和/或條件。更清晰,我立即得到它。與$ counter ++同樣。關於== 0,OP(似乎)完全不知道模數,所以最好寫出有意義的表達式,你不覺得嗎? :) –

+0

當然,但然後給孩子一個名字,請參閱編輯;) – hakre

1

我認爲這個名單是動態的未來,那麼你可以使用

<?php 
$i=0; 
foreach ($in as $v){ 
     $i++; 
     $class = (!$i%6) ? "something : ""; ?> 
     <li class="<?=$class?>"><?=$v?></li> 

<?php } ?> 

注:我已經使用速記標籤<?=,您可以使用<?php echo代替