使用PHP从数组中生成三列

时间:2013-11-19 20:22:59

标签: php html arrays

我有一个包含列表数据的数组,我正在尝试从数组中自动创建一个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          

每列可以根据需要包含任意数量的元素 我如何实现这一目标?

3 个答案:

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