我在这里疯了 - 希望你能帮助我解决这个问题!什么应该是非常简单的数学让我感到困惑。
$columns = 3;
$items = range(1,20);
$total = count($items);
$col1 = ???; $col2 = ???; $col3 = ???;
// $col1 must be an array of (1,2,3,4...)
// $col2 must be an array of (8,9,10,11...)
// $col3 must be an array of (15,16,17,18...)
COL1 COL2 COL3
1 8 15
2 9 16
3 10 17
4 11 18
5 12 19
6 13 20
7 14
以上是我想要实现的一个直观的例子。基本上,对于数组中任何给定数量的项目以及任何给定数量的列,如何生成尽可能相等长度的n个数组(等于列数)。如果不能使用相等的长度(如上例所示),它们必须尽可能均匀地展开,最后一个数组必须最短。
如果我在上面的示例中构建$ col1 / 2/3的任何指导将非常感激!
请忽略我使用范围和整数生成数组的事实 - 这只是为了简化示例。假设数组将包含字符串。
感谢您的帮助!
答案 0 :(得分:1)
您确实想使用array_chunk
,但您需要自己计算块大小:
list($col1, $col2, $col3) = array_chunk($items, ceil($total / $columns));
答案 1 :(得分:0)
我想你可能想要array_chunk
list($col1,$col2,$col3)=array_chunk($arrofstrings,$colcount);
答案 2 :(得分:0)
$itemsInColumn = ceil($total / $columns);
答案 3 :(得分:0)
$columns = 3;
$items = range(1, 20);
$rows = array_chunk($items, $columns);
$columns = array();
foreach ($rows as $row) {
for ($i = 0; $i < $columns; $i++) {
$columns[$i][] = $row[$i];
}
}