我不明白这一点。我需要解决看似简单的问题,但它超出了我的逻辑。我需要编写一个函数:table_columns($ input,$ cols),它将输出一个表(例子):
$input = array('apple', 'orange', 'monkey', 'potato', 'cheese', 'badger', 'turnip');
$cols = 2;
预期产出:
<table>
<tr>
<td>apple</td>
<td>cheese</td>
</tr>
<tr>
<td>orange</td>
<td>badger</td>
</tr>
<tr>
<td>monkey</td>
<td>turnip</td>
</tr>
<tr>
<td>potato</td>
<td></td>
</tr>
</table>
答案 0 :(得分:6)
这样想。假设你有一系列这样的项目:
a, b, c, d, e, f, g, h, i, j, k
如果将列设置为2
,则需要按以下顺序渲染:
a g
b h 0 6 1 7 2 8 3 9 4 10 5
c i ---> a g b h c i d j e k f
d j
e k
f
有三列:
a e i
b f j 0 4 8 1 5 9 2 6 10 3 7
c g k ---> a e i b f j c g k d h
d h
所以,粗略地说:
function cells ($input, $cols) {
$num = count($input);
$perColumn = ceil($num / $cols);
for ($i = 0; $i < $perColumn; $i++) {
echo "<tr>";
for ($j = 0; $j < $cols; $j++) {
// you'll need to put a check to see you haven't gone past the
// end of the array here...
echo "<td>" . $input[$j * $perColumn + $i] . "</td>";
}
echo "</tr>";
}
}
答案 1 :(得分:4)
$input = array_chunk($input, $cols);
$html = '<table>';
foreach($input as $tr){
html .= '<tr>';
for($i = 0; $i < $cols; $i++) $html .= '<td>'.(isset($tr[$i]) ? $tr[$i] : '').'</td>';
$html .= '</tr>';
}
$html .= '</table>';
答案 2 :(得分:-1)
尝试此功能:
function table_columns($input, $cols)
{
int $i = 0;
echo "<table><tr>";
foreach ( $input as $cell )
{
echo "<td>".$cell."</td>";
$i++;
if($i == $cols)
{
$i = 0;
echo "</tr><tr>";
}
}
echo "</tr></table>";
}
我希望它能解决你的问题。
[编辑:修正错误,匆忙]