2011-10-07 98 views
0

我有一個無序列表中顯示的一些信息像上面:生成複雜無序列表PHP

<ul> 
    <li class="first">...</li> 
    <li>...</li> 
    <li class="last">...</li> 

    <li class="first">...</li> 
    <li>...</li> 
    <li class="last">...</li> 

    <li class="first">...</li> 
    <li>...</li> 
    <li class="last">...</li> 

    ... 
</ul> 

我需要把它打印使用PHP。

我的問題是如何在每三個結果後爲第一個最後一個元素設置該類?

謝謝。

+0

你試圖讓這個樣子的哪些數據? – Brad

回答

2

在轉儲結果時,請使用計數器。

for ($i = 0; $i < $items; $i++){ 
} 

然後,你可以MOD計數器看看你在哪個元素上。例如: -

for ($i = 0; $i < $items; $i++){ 

    // start with no class applied 
    $className = ''; 

    // 0/3 = 0, remainder of 0 
    // 3/3 = 1, remainder of 0 
    // etc. 
    if ($i % 3 == 0) $className = 'first'; 

    // 2/3 = 0, remainder of 2 
    // 5/3 = 1, remainder of 2 
    // etc. 
    else if ($i % 3 == 2) $className = 'last'; 

    // print the element, and any class that needs to be applied 
    echo '<li class="' . $className . '">...</li>'; 
} 
+0

而且,BTW,一個演示:http://www.ideone.com/EiYao –

0

我假設你正在使用的數組:

foreach($array as $index=>$value){ 
    $class = ""; 
    if($index%3 == 0){ 
     $class = "first"; 
    } 
    if($index%2 == 0){ 
     $class = "last"; 
    } 
} 
1

事情是這樣的......

<ul> 
<? 
    $classes = array('first', '', 'last'); 
    for ($i = 0; $i < count($myResults); $i++) : 
     $class = $classes[$i % 3]; 
?>   
<li class="<?=$class?>><?=$myResults[$i]?></li> 
<? 
    endfor; 
?> 
</ul> 
+0

有趣的是,你選擇進/出標記而不是單個回聲... –

+0

我不知道它是否有所不同一個處理的角度來看,但我通常會盡量保持我的標記乾淨,並與我的PHP代碼分開。這是一個值得懷疑的例子,因爲它是單線的,所以昨天或明天我可能會選擇其他的! –