2017-08-30 12 views
0

私は19の項目が長い(しかし、多かれ少なかれ変わる可能性がある)順序付けられたリストを持っています。私はドロップダウンメニューでそれをリストアップしていますが、その長さのために、列はページの折り畳みの下に落ちています。Phpは列をリストに分割します(好ましくは等しく)

別の列(ulまたはdiv)を作成して、リストを2つまたは3つに等しく分割するか、リストサイズを設定する(例: 1リストにつき最大7。

アイデア?現在のコードは:

<div id="colour" class="dropmenudiv"> 
<?php 
$sql = "select * from rug_colours where id <> 0 and active = 1 order by name"; 
$rs = $database->query($sql); 
$index = 0; 
foreach($rs as $v) { 
    echo "<a href=\"//$base_url/?action=search&colour=".$v['id']."\" >".$v['name']."</a>"; 
} 
?> 
+0

は私が最初に知っていますか?あなたのコードは正常に動作していますか?すべての値がドロップダウンに入っていますか? –

+0

[リストを均等なサイズのチャンクに分割するにはどうすればいいですか?](https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks) – Jakumi

+0

Ryan Malone回答を確認し、あなたに最も適した答えを1つマークするのはあなたの責任です。 –

答えて

1

あなたは、これは、列ごとに7つの項目で3 colunsへ$abcにデータを分割します

$abc = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; 
$cols = []; 
$perCol = 7; 
foreach($abc as $index => $val) { 
    $colInd = $index/$perCol; 
    $cols[$colInd][] = $val; 
} 

print_r($cols); 

のようなのforeach()ループの中で、現在のインデックスに基づいて列の配列を作成することができます。

0

2または3 divに分割するには、index変数を使用する必要があります。

$index = 0; 
foreach($rs as $v) { 
    if($index > 7){ 
     $index = 0; // reset to zero. You can also seperate it by any tag div or ul if you want 
    } 
    echo "<a href=\"//$base_url/?action=search&colour=".$v['id']."\" >".$v['name']."</a>"; 
$index++; 
} 
0

はの線に沿って何かしてみてください:

<div id="colour" class="dropmenudiv"> 
    <?php 
    $sql = "select * from rug_colours where id <> 0 and active = 1 order by name"; 
    $rs = $database->query($sql); 
    $column_height = 7; 
    echo "<div class='column'>"; 
    foreach($rs as $idx => $v) { 
     echo "<a href=\"//$base_url/?action=search&colour=".$v['id']."\" >".$v['name']."</a>"; 
     if($idx % $column_height) echo "</div><div class='column'>"; 
    } 
    echo "</div>"; 
    ?> 

をして等しい分割のためにあなたがこれを試みる場合があります:

$max_column_height = 7; 
$no_of_cols = ceil(count($rs)/$max_column_height); 
$column_height = floor($count($rs)/$no_of_cols); 
0

以下は例が三つの部分でそれを作ることです

均等に分散された分布の場合は、最初に要素の数を7で割ります(またはt o)、上に丸めます。これは列数を示します。要素の数を列数で割り、上に丸めます。これにより、必要な実際の行数が得られます。この目的のために

私が好きarray_chunk

$maxRowCount = 7; 

$colCount = ceil(count($rs)/$maxRowCount); 
$chunkSize = ceil(count($rs)/$colCount); 

foreach(array_chunk($rs, $chunkSize) as $column) { 
    echo "<div class='column'>\n"; 
    foreach($column as $v) { 
     echo "<a href=\"//$base_url/?action=search&colour={$v['id']}\" >{$v['name']}</a>"; 
    } 
    echo "</div>\n"; 
} 
関連する問題