我想以自定义顺序显示数组数据。
我的示例数组是:
['a' => 'a',
'b' => 'b',
'c' => 'c',
'd' => 'd',
'e' => 'e',
'f' => 'f',]
我尝试使用以下代码:
<table>
<tr>
<?php
$count = 0;
foreach ($support_others as $other) {
echo "<td>" . $other ."</td>";
$count++;
if ((($count % 3) == 0) && ($count > 0)) {
echo ("</tr><tr>");
}
}
?>
</tr>
</table>
以
显示订单a b c
d e f
但我希望显示为:
a d
b e
c f
任何帮助将不胜感激。
答案 0 :(得分:0)
我总是喜欢乱搞带有两个计数器的循环来做这样的事情。看看这个解决方案:
<?php
$support_others = [
'a' => 'a',
'b' => 'b',
'c' => 'c',
'd' => 'd',
'e' => 'e',
'f' => 'f'
];
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<table>
<?php
for ($i = 'a', $j = 'd'; $i < 'd', $j < 'g'; $i++, $j++) {
echo '<tr>';
echo '<td>' . $support_others[$i] . '</td>';
echo '<td>' . $support_others[$j] . '</td>';
echo '</tr>';
}
?>
</table>
</body>
</html>
有关更通用的版本,请参阅此处:
<?php
$columnOneStart = 'a';
$columnOneEnd = 'c';
$columnTwoStart = 'd';
$columnTwoEnd = 'f';
for ($i = $columnOneStart, $j = $columnTwoStart; $i <= $columnOneEnd, $j <= $columnTwoEnd; $i++, $j++) {
echo '<tr>';
echo '<td>' . $support_others[$i] . '</td>';
echo '<td>' . $support_others[$j] . '</td>';
echo '</tr>';
}
?>
答案 1 :(得分:0)
在这种表格显示中,键是每行的元素数,可以计算行数和行的第一个元素。 找到它之后,您只需添加列号即可使“指针”移动到“行”元素。
<?php
$example = [
'a' => 'a',
'b' => 'b',
'c' => 'c',
'd' => 'd',
'e' => 'e',
'f' => 'f'
];
$elements = range('a', 'z');
function customTable($elements, $elementsPerRow = 2){
$elements = array_values($elements);
$count = count($elements);
// Prevent empty cols and unallowed (<0 && >n)
$elementsPerRow = !($elementsPerRow < $count/2 && $elementsPerRow > 0)
? (($elementsPerRow > $count) ? $count : 1)
: $elementsPerRow;
$rows = ceil($count / $elementsPerRow);
$table = '<table>';
for($i = 0; $i < $rows; ++$i){
$table .= '<tr>';
for($j = 0; $j < $elementsPerRow; ++$j){
$table .= '<td>' . (isset($elements[$j*$rows+$i]) ? $elements[$j*$rows+$i] : '') . '</td>';
// For debug purpose only
$table .= '<td>' . ($j*$rows+$i) . '</td>';
}
$table .= '</tr>';
}
return $table . '</table>';
}
?>
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
table { border-collapse : collapse; margin: 1em;}
td { border: 1px solid black; padding: 0.5em; }
</style>
</head>
<body>
<?php
echo customTable($elements, 2);
echo customTable($elements, 3);
echo customTable($elements, 4);
echo customTable($elements, 30);
echo customTable($example, 2);
?>
</body>
</html>