PHP:在表中的多个列上堆叠数组

PHP:在表中的多个列上堆叠数组,php,html,css,Php,Html,Css,我有一个有趣的问题,好像很久以前就解决了,但找不到任何东西 我有一个简单的数组,长度可变 我需要将数组放在一个表中,但只有X列宽。也就是说,如果数组有25个值,而我只需要3列,那么将有2列11和1列3(剩余) 如下所示(每个数字表示表格单元格中的一个值): 今天下午我花了一整天的时间,看起来很简单,但不是我今天的比赛结束了,就是比我想象的要难 当然,在水平方向上没有问题,很简单,但垂直方向是必需的,我从来不知道数组的大小和列的数量可能会有所不同 谢谢你的帮助 如果您希望最后一列包含尽可能多的元素

我有一个有趣的问题,好像很久以前就解决了,但找不到任何东西

我有一个简单的数组,长度可变

我需要将数组放在一个表中,但只有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;
}