私は列に分割する必要がある動的な項目数を持っています。のは、私はこれを与えられてるとしましょう:動的な項目数を列に分割する
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個以下のアイテムがある場合は、
<ul>
- の4つのアイテムのようなIDです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)のように、数は列の#を指示するが、私はリファクタリングする必要があるので、それが決定
興味深い質問です。本当に良い答えでこの質問に答えるとすぐに回答を受け入れないことをお勧めします。 –
「16個以上のアイテムがあれば、均等に広げたいですか?」 「均等に分散」を定義します。 –
あなたの条件は、一貫性がありませんre:ソート。連続する項目が行順(例で暗示される)または列順(「17の項目がある場合、17番目の項目は最初の列に移動する必要があります」と暗示されます) –