PHP:在表中的多个列上堆叠数组
我有一个有趣的问题,好像很久以前就解决了,但找不到任何东西 我有一个简单的数组,长度可变 我需要将数组放在一个表中,但只有X列宽。也就是说,如果数组有25个值,而我只需要3列,那么将有2列11和1列3(剩余) 如下所示(每个数字表示表格单元格中的一个值): 今天下午我花了一整天的时间,看起来很简单,但不是我今天的比赛结束了,就是比我想象的要难 当然,在水平方向上没有问题,很简单,但垂直方向是必需的,我从来不知道数组的大小和列的数量可能会有所不同PHP:在表中的多个列上堆叠数组,php,html,css,Php,Html,Css,我有一个有趣的问题,好像很久以前就解决了,但找不到任何东西 我有一个简单的数组,长度可变 我需要将数组放在一个表中,但只有X列宽。也就是说,如果数组有25个值,而我只需要3列,那么将有2列11和1列3(剩余) 如下所示(每个数字表示表格单元格中的一个值): 今天下午我花了一整天的时间,看起来很简单,但不是我今天的比赛结束了,就是比我想象的要难 当然,在水平方向上没有问题,很简单,但垂直方向是必需的,我从来不知道数组的大小和列的数量可能会有所不同 谢谢你的帮助 如果您希望最后一列包含尽可能多的元素
谢谢你的帮助 如果您希望最后一列包含尽可能多的元素以适合其他列(此问题最具动态性的情况),这将是一个解决方案:
<?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>';
}
谢谢你!以下是您的解决方案,对其进行了一些修改,以直接回答问题:
$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>';
$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=计数($myArray);//25
$columnLength=ceil($arrayLength/$numberOfColumns);//9
因为($i=0;$i你不会相信的
您所需要的只是HTML和CSS-
另见文件:
享受!;)为什么不使用两列10和第三列5呢?我可以想象这会有点棘手,因为只要左边的列大小相等并且比最右边的列长,这将是一个有效的解决方案。也就是说,10的两列和5的一列符合要求,12的两列和1的一列符合要求,9的两列和7的一列符合要求…那么列的数量和列的长度是一个函数的参数,应该“打印”它吗?规则是什么?一列中有多少项?允许的最大列数是多少?这看起来像是一个可以在一个foreach循环中解决的简单问题;)抱歉,我不知道您想用这些数据构建一个HTML表。我很高兴你能找到解决问题的办法!请考虑接受我的回答。@比尔凯斯瓦基,这是一个很好的做法,接受正确的答案,以支持用户的动机。请考虑在这里做:
$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>';
<div class="xtable">
<div>1</div>
<div>2</div>
<div>3</div>
...
<div>24</div>
<div>25</div>
</div>
.xtable {
column-count: 3;
}