<?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而不是表格。
答案 0 :(得分:1)
垂直排序的那种列(没有双关语)是html中的一个严重问题,因为这个arragement是&#34; top-&gt; bottom,left-&gt; right&#34 ;,而HTML表格由他们自然是&#34; left-&gt; right,top-&gt; bottom&#34;代替。
要绕过它,你必须对数组索引进行一些偏移数学运算,这样你就可以按行输出:
$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;
}
这段代码可能不会按原样运作,但应该给你基本的想法。
答案 1 :(得分:1)
<强> EDITED 强>
<?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";
?>
答案 2 :(得分:1)
<?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;">';
}
}
?>