0

我有例如:

<?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。

4

6 回答 6

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;
}
于 2012-07-19T09:55:28.670 回答
0

在 PHP 中,您可以使用wordwrap()

于 2012-07-19T09:31:52.243 回答
0

如果我正确理解您的问题,您可以使用 DIVS 并以像素为单位设置高度和宽度。测试什么有效。如果您对高度和宽度不满意,您还可以使用 javascript 来计算字符数。

最后但同样重要的是,您可以在 PHP 中添加一个计数器,然后为新列添加中断或 div。或者你可以自动换行。

于 2012-07-19T09:32:00.400 回答
0

这是 javascript - http://jsfiddle.net/ZAWKq/中的示例。

使用 div 并为其设置固定宽度,就像我在上面的示例中所做的那样。在 php 中它将是 -

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

剩下的留给 CSS。

于 2012-07-19T09:34:35.667 回答
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>";
于 2012-07-19T09:47:32.730 回答
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>";
于 2012-07-19T10:02:43.963 回答