Возможный дубликат:
Нарежьте массив на 4 других массива
Массив можно разделить на 3 меньших массива, используя:
$things = array('...'); // an array containing 9 things $things = array_chunk($things, count($things)/3);
Проблема: Однако, когда count($things)
количество элементов в массиве не может быть разделено поровну на 3
, я получаю 4 меньших массива. Например, если у меня есть 10 элементов в массиве $things
, ввод его в array_chunk()
дает мне 3 массива из 3 элементов и 4-й массив, содержащий 1 элемент.
Как я могу разделить массив на 3 меньших массива, так что, если у меня будет такая ситуация, как в приведенном выше примере, я в конечном итоге
count($things[0]) == 4 count($things[1]) == 4 count($things[2]) == 2
Басциально то, что я делаю, – это взять большой массив и отобразить его как можно более равномерно в 3 столбца. Он сортируется по алфавиту, поэтому последовательность важна.
Попробуйте ceil(count($things) / 3)
, поэтому точка разделения округляется. это даст вам (скажем) 4/4/3 вместо 3/3/3/2 для массива из 11 предметов.
Проверьте ответ, который я дал по этому дублирующему вопросу , и измените значение 4
: 3
:
$groups = array_chunk($all,(int)ceil(count($all)/3));