<?php
$arr = range(1,rand(40,120)); ?>
<table>
<?php
foreach ($arr as &$value) {
echo '<tr><td>' . $value . '</td></tr>';
} ?>
</table>例如,这将为我生成:
1
2
3
...
111所有内容都集中在一列中。如何创建第一列中的25行,然后创建新列,等等。例如:
1 26 51
2 27 ...
3
..
25 50我怎么才能做到呢?我可以用DIV代替table。
发布于 2012-01-20 04:47:16
<?php
$arr = range(1,rand(40,120));
?>
<div style="width:40px; float:left;">
<?php
foreach ($arr as $value) {
echo $value . '<br />';
if ($value % 25 == 0) {
echo '</div><div style="width:40px; float:left;">';
}
}
?>
发布于 2012-01-20 04:29:18
这种垂直排序的列(不是双关语)在html中是非常痛苦的,因为这种排列是“顶部->底部,左侧->右侧”,而HTML表格本质上是“左侧->右侧,顶部->底部”。
为了解决这个问题,你必须对数组索引做一些偏移量计算,这样你就可以按行输出:
$arr = range(1,rand(40,120));
$rows = ceil(count($arr) / 3); // assuming 3 columns
for ($i = 0; $i < $rows; $i++) {
echo <<<EOL
<tr>
<td>{$arr[$i]}</td> 1, 2, 3, etc...
<td>{$arr[$i+rows]}</td> 11, 12, 13, etc...
<td>{$arr[$i+(2*$rows)]}</td> 21, 22, 23, etc...
</tr>
EOL;
}这段代码可能不会按原样工作,但应该会给您一个基本的概念。
发布于 2012-01-20 04:29:27
编辑的
<?php
$rows = 25;
$arr = range(1, rand(40, 120));
$arr = array_merge($arr, array_fill(0, $rows - (count($arr) % $rows), null));
$cols = ceil(count($arr) / $rows);
$render = array();
echo '<table>' . "\n";
foreach ($arr as $i => $value) {
$render[$i % $rows][] = $value;
if (count($render[$i % $rows]) == $cols) {
echo ' <tr>' . "\n" . ' <td>' . implode('</td>' . "\n" . ' <td>', $render[$i % $rows]) . '</td>' . "\n" . ' </tr>' . "\n";
}
}
echo '</table>' . "\n";
?>https://stackoverflow.com/questions/8932725
复制相似问题