У меня есть динамическое количество элементов, в которых мне нужно разделить на столбцы. Скажем, я дал это:Разделение динамического числа элементов на столбцы
array("one", "two", "three", "four", "five", "six", "seven", "eight")
Мне нужно создать это:
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
</ul>
<ul>
<li>five</li>
<li>six</li>
<li>seven</li>
<li>eight</li>
</ul>
Вот некоторые правила:
- если нет никаких пунктов, я не хочу все, что нужно выплюнуть
- , если их 16 или менее 16 единиц, идентификатор, как 4 штуки на
<ul>
- if есть более 16 элементов, я бы хотел, чтобы он был распределен равномерно
- Мне нужно будет в алфавитном порядке переупорядочить элементы. если есть 17 предметов, 17-й предмет должен будет перейти в первый столбец, но все нужно переупорядочить.
То, что я до сих пор:
function divide($by, $array) {
14 $total = count($array);
15 $return = array();
16 $index=0;
17 $remainder = $total % $by !== 0;
18 $perRow = $remainder ?
19 $total/$by + 1:
20 $total/$by
21 ;
22
23 for ($j = 0; $j<$by; $j++) {
24 //$return[] = array();
25
26 if ($index == 0) {
27 $slice = array_slice($array, 0, $perRow);
28 $index = $perRow;
29 $return[$j] = $slice;
30 } else {
31 $slice = array_slice($array, $index, $perRow);
32 $index = $index+$perRow;
33 $return[$j] = $slice;
34 }
35 }
}
кормлю ряд, как разделить (4, $ arrRef), число диктует # столбцов, но мне нужно изменить, так что определяет количество столбцов
Интересный вопрос. Я бы порекомендовал, чтобы вы сразу не приняли ответ, отвечая на этот вопрос, действительно хороший ответ может занять некоторое время. – 2010-12-08 18:05:12
«если есть более 16 предметов, я бы хотел, чтобы они были равномерно распределены»? Определите «равномерно распределить». – 2010-12-08 18:06:56
Ваши условия не являются самосогласованными: сортировка. Вы хотите, чтобы последовательные элементы были в порядке строк (подразумеваемые примером) или порядке столбцов (подразумевается «если есть 17 элементов, 17-й элемент должен будет перейти в первый столбец») – 2010-12-08 18:07:34