2013-11-19 2 views
1

У меня есть массив с данными для списка, и я пытаюсь автоматически создать список из 3 столбцов из массива.Использование PHP для создания трех столбцов из массива

В массиве данные уже в алфавитном порядке, поэтому я хочу в принципе разделить массив на 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   

В каждом столбце может быть столько элементов, сколько необходимо.
Как это достичь?

ответ

1

как коснуться это должно работать:

$cols = 3; 
$array = array('a','b','c','d','e','f','g','h'); 

$columns = array_chunk($array, ceil(count($array)/$cols)); 

Куски devides массив. CEIL разделенного массива определяет размер блока

+1

спасибо. Простой и эффективный. – JROB

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; 
} 
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)); 
Смежные вопросы