2012-07-19 14 views
0

我有,例如:HTML + FOREACH - 目前的數據

<?php $array = array(aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj,kkk,lll,mmm,nnn, 111,222,333); ?> 

,如果我使用的foreach:

foreach($array as $a){ 
    echo $a . '<br />'; 
} 

這表明我的數據:

aaa 
bbb 
ccc 
ddd 
eee 
fff 
... 
111 
222 
333 

,但我想設置最大位置的高度 - 如果例如數據太長,則應該在新列中:

aaa eee ... 111 
bbb fff ... 222 
ccc ... ... 333 

這樣做的最佳方式是什麼?我可以使用DIV或TABLE。

+1

你舉的例子是無效的PHP。 – PeeHaa 2012-07-19 09:30:19

回答

1

你需要在你的PHP,在那裏三種元素中每創建一個新的div元素添加計數器和浮動所有div元素左移。

PHP:

$array = array("aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","jjj","kkk","lll","mmm","nnn", "111","222","333"); 

$index = 0; 
foreach($array as $a){ 
    $index = $index + 1; 
    if ($index % 3 === 1){ 
     echo '<div class="column">'; 
    } 
    echo $a . '<br />'; 
    if ($index % 3 === 0){ 
     echo '</div>'; 
    } 
} 
if ($index % 3 !== 0){ 
     echo '</div>'; 
} 

,並在你的CSS,你將需要:

.column{ 
    float:left; 
} 
0

如果我明白你的問題正確的話,你可以在像素使用DIVS並設置高度和寬度。測試什麼可行。如果您對高度和寬度不滿意,也可以使用javascript來計算字符數。

最後但並非最不重要的一點,您可以向PHP添加計數器,併爲新列添加分隔符或div。或者你可以用很多字來包裝。

0

以下是JavaScript中的示例 - http://jsfiddle.net/ZAWKq/

使用div併爲其設置固定寬度,就像我剛剛在上面的示例中那樣。在PHP中,它將是 -

<div> 
<?php 
foreach($array as $a){ 
    echo ' '.$a; 
} 
?> 
</div> 

剩下的部分留給CSS。

+0

這不是OP想要的,他希望他的容器具有固定高度和可變寬度。數據被附加到另一個下面,同時在到達第四行時創建一個新列。 – Dan 2012-07-19 09:42:24

+0

謝謝,但我不想用JS – 2012-07-19 09:47:11

+0

我給你看了下面的php代碼:)。基本上就像@丹告訴的那樣,我的例子不會是正確的。但是您可以使用表格來設置列中的值,或者您可以使用更高級的DIV。基本上我會建議你使用這些功能表。幾乎沒有其他陳述你應該能夠做到。 – y2ok 2012-07-19 09:48:49

0
$i=0; 
$max=3; //Maximum column 
echo "<table><tr>"; 
foreach($array as $a){ 

if($i%$max==0) 
{ 
    echo '</tr><tr>'; 
} 
echo '<td>'.$a.'</td>'; 
$i++; 
} 
echo "</tr></table>"; 
+0

OP不需要固定數量的列設置。他想要一個可變列 - & - 固定行設置。列可以是'n',但是行應該是三個,並且任何第四或第七個項目應該分別在第二或第三列上。 – DavChana 2012-07-19 09:55:19

0
$array = array("aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","jjj","kkk","lll","mmm","nnn", "111","222","333"); 

$i=0; 
    $maxRow=3; //Fixed row 
    $col=(count($array)/$maxRow)+1; 
    echo "<table><tr>"; 

    foreach($array as $a){ 

     if($i%$col==0) 
     { 
      echo '</tr><tr>'; 
     } 
     echo '<td>'.$a.'</td>'; 
     $i++; 
    } 
    echo "</tr></table>";