2013-10-10 67 views
1

我需要用<ul>標籤包裝我的html輸出。
使用模數,我可以使用模數循環計算非偶數

if($i==0 || $i % 4==0) 

啓動開始標籤(每4個),但收盤</ul>我需要的3, 7, 11, 15, 19等模式..
這裏是我的嘗試if ($i!=0 && (($i-1) % 4 == 0 || $i==$max-1))

全碼

$str = ''; 
$i = 0; 
$max = count($value['title']); 
foreach ($value['title'] as $key2){ 

     //if($i==0 || $i==4 || $i==8 || $i==12 || $i==16) 
     if($i==0 || $i % 4==0) 
      $str .= "<ul>"; 

     $str .= "<li><a href='#'>$key2</a></li>"; 

     if($i==3 || $i==7 || $i==11 || $i==15 || $i==19 || $i==$max-1) 
     //if ($i!=0 && (($i-1) % 4 == 0 || $i==$max-1)) 
     //if($i!=0 || $i % 3==1 || $i==$max-1) 
      $str .= "</ul>"; 

     $i++; 
    } 
echo $str; 

發佈問題後,我通過將負號更改爲正號if ($i!=0 && (($i+1) % 4 == 0 || $i==$max-1))

+0

是否稱號陣列總是有四個項目的多?數它有11個項目? –

+0

@t q解釋清楚。你想要什麼 –

回答

0

像這樣的事情

$value['title'] = range(0, 100); 
$max = count($value['title']); 
$i = 0; 
$count = 4; 
$str = ''; 
foreach ($value['title'] as $key2) 
    { 
    if ($i % $count == 0) 
     $str .= "<ul>" . PHP_EOL; 

    $str .= "<li><a href='#'>$key2</a></li>" . PHP_EOL; 

    if ($i % $count == $count - 1 || $i == $max - 1) 
     $str .= "</ul>" . PHP_EOL; 
    $i++; 
    } 

echo $str; 

http://3v4l.org/f6cAl

2

我更喜歡用自己的陣列來使用implodes,但是這會按照你的標題來操作。

echo '<ul>'; 
foreach ($array as $key => $value) { 
    echo "<li><a href='#'>$value</a></li>"; 
    if (3 === $key % 4) { 
     echo '</ul><ul>'; 
    } 
} 
echo '</ul>'; 

我不喜歡這種方法,因爲它意味着當數組有四個項目的倍數時會有一個空的ul標籤。可能有所作爲,但我認爲它很sl。。

而不是我的,我建議:

$list = ''; 
foreach ($array as $key => $value) { 
    $list .="<li><a href='#'>$value</a></li>"; 
    if (3 === $key % 4) { 
     echo "<ul>$list</ul>"; 
     $list = ''; 
    } 
} 

if ($list) { 
    echo "<ul>$list</ul>"; 
}