我有一个包含列表数据的数组,我正在尝试从数组中自动创建一个3列列表。
在数组中,数据已按字母顺序排列,因此我希望基本上将数组除以3以获得每列中将有多少条数据,然后在屏幕上打印它们。
我希望列表按顺序从每列的顶部到底部排序。例如:
Col 1 Col 2 Col 3
A D G
B E H
C F I
如果数组上的元素数量不能被3整除,那么它将如下所示:
如果有任何“剩余”(不能被3整除),那么就这样做:
Col 1 Col 2 Col 3
A D G
B E H
C F
每列可以根据需要包含任意数量的元素 我如何实现这一目标?
答案 0 :(得分:1)
这样的事情应该有效:
$cols = 3;
$array = array('a','b','c','d','e','f','g','h');
$columns = array_chunk($array, ceil(count($array)/$cols));
块分割数组。分割数组的细胞定义了块大小
答案 1 :(得分:1)
试试这个,
function array_chunk_fixed($input, $num, $preserve_keys = FALSE) {
$count = count($input) ;
if($count)
$input = array_chunk($input, ceil($count/$num), $preserve_keys) ;
$input = array_pad($input, $num, array()) ;
return $input ;
}
$array = array('A', 'B','C' , 'D', 'E' , 'F', 'G' ,'H');
print_r(array_chunk_fixed($array, 3));
答案 2 :(得分:0)
$data = range('A','H');
$columns = 3;
$chunkedData = array_chunk($data, $columns);
$transposedData = call_user_func_array(
'array_map',
array_merge(
array(NULL),
$chunkedData
)
);
displayArray($transposedData);
function displayArray(array $data) {
foreach($data as $row) {
echo implode("\t", $row), PHP_EOL;
}
echo PHP_EOL;
}