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

时间:2016-10-11 22:11:41

标签: php html css3

我有一个有趣的问题,似乎很久以前就已经解决了但却找不到任何东西。

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

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

我整个下午都花了这么多时间,看起来很简单,但要么我的游戏今天关闭,要么比我想的更难。

当然,水平,容易,但垂直是没有问题的要求,我永远不知道阵列的大小和列数可以变化。

感谢您的帮助!

3 个答案:

答案 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>';
}

这是我浏览器中的输出:

enter image description here

答案 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

享受! ;)