我有一个有趣的问题,似乎很久以前就已经解决了但却找不到任何东西。
我有一个简单的数组,可变长度。
我需要将数组放在一个表中,但只有X列宽。意思是,如果数组有25个值,而我只想要3个列,那么将有2列11和1列3(余数)。
像这样(每个数字代表一个表格单元格中的值):
1 12 23
2 13 24
3 14 25
4 15
5 16
6 17
7 18
8 19
9 20
10 21
11 22
我整个下午都花了这么多时间,看起来很简单,但要么我的游戏今天关闭,要么比我想的更难。
当然,水平,容易,但垂直是没有问题的要求,我永远不知道阵列的大小和列数可以变化。
感谢您的帮助!
答案 0 :(得分:8)
如果你希望最后一列有尽可能多的元素以适应其他列(这个问题的最动态的情况),这将是一个解决方案:
<?php
$numberOfColumns = 3;
$myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25];
$arrayLength = count($myArray); // 25
$columnLength = ceil($arrayLength / $numberOfColumns); // 9
for ($i = 0; $i < $columnLength; $i++) {
for ($j = 0; $j < $numberOfColumns; $j++) {
$arrayIndex = $j * $columnLength + $i;
if ($arrayIndex < $arrayLength) {
echo $myArray[$arrayIndex] . " ";
}
}
echo '<br>';
}
这是我浏览器中的输出:
答案 1 :(得分:0)
谢谢nanocv!这是你的解决方案有点改为直接回答问题:
$numberOfColumns = 3;
$myArray = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25);
$arrayLength = count($myArray); // 25
$columnLength = ceil($arrayLength / $numberOfColumns); // 9
for($i=0; $i<$columnLength; $i++) {
$table .= '<tr>';
for ($j = 0; $j < $numberOfColumns; $j++) {
$arrayIndex = $j * $columnLength + $i;
if($arrayIndex < $arrayLength) {
$table .= '<td>' . $myArray[$arrayIndex] . '</td>';
} else {
$table .= '<td></td>'; // render empty cells
}
}
$table .= '</tr>';
}
echo '<table border="1">' . $table . '</table>';
答案 2 :(得分:0)
您不会相信。
您只需要HTML和CSS-https://jsfiddle.net/wz9kp6x0/
<div class="xtable">
<div>1</div>
<div>2</div>
<div>3</div>
...
<div>24</div>
<div>25</div>
</div>
和
.xtable {
column-count: 3;
}
另请参阅文档:https://www.w3schools.com/css/css3_multiple_columns.asp
享受! ;)