2013-03-01 74 views
0

我有10個用戶在一個陣列:嵌套UL利用PHP數組和特定計數

$array = array(
    "aaa", 
    "bbb", 
    "ccc", 
    "ddd", 
    "eee", 
    "fff", 
    "ggg", 
    "hhh", 
    "iii", 
    "jjj", 
); 

我希望根據5個或更少的用戶例如到顯示列表:

<ul> 
    <li> 
     <ul> 
      <li>aaa</li> 
      <li>bbb</li> 
      <li>ccc</li> 
      <li>ddd</li> 
      <li>eee</li> 
     </ul> 
    </li> 
    <li> 
     <ul> 
      <li>fff</li> 
      <li>ggg</li> 
      <li>hhh</li> 
      <li>iii</li> 
      <li>jjj</li> 
     </ul> 
    </li> 
</ul> 

目前我有:

<ul> 
<?php foreach($users as $user): ?> 
    <li><?php echo $user ?></li> 
<?php endforeach; ?> 
</ul> 

但是我沒有創建內在的uls。解決這個問題的最好方法是什麼?使用for循環並計數5?還是有一個整潔的方法?

回答

2

使用array_chunk()將數組拆分爲具有指定數量項目的多個數組。

<ul> 
<?php 
$users = array_chunk($array, 5); 
foreach ($users as $user) { 
    echo "<li><ul>"; 
    foreach ($user as $idv) { 
     echo "<li>" . $idv . "</li>"; 
    } 
    echo "</ul></li>"; 
} 
?> 
</ul> 
0

看的替代解決方案:)

<li> 
<ul> 
    <?php 
     echo '<li>'.join('</li><li>',array_slice($array,0,5)).'</li>'; 
    ?> 
</ul> 
</li> 

<li> 
<ul> 
    <?php 
     echo '<li>'.join('</li><li>',array_slice($array,5,10)).'</li>'; 
    ?> 
</ul> 
</li> 
0
<ul> 
<?php 
$lenght = count($users); 
for($i=0; $i<$lenght; $i++){ 
if($i%5 == 0){ 
    echo '<li><ul>'; 
} 
echo '<li>'.$users[0].'</li>'; 
if($i%5 == 4 || ($i+1==$lenght)){ 
    echo '</ul></li>'; 
} 
}?> 
</ul>