我做了一次搜索,但没有发现任何相同或有帮助的东西。
我有来自数据库的行,我想做的是将其划分为5列。
这就是我所拥有的,它只显示了4列,我被卡住了。。。。
$result
是包含数据库行的数组。
$divider = floor(count($result) / 5);
$roundup = ceil(count($result) / 5);
$start = 0;
for ($i = 0; $i <= $divider; $i++) {
$splResult = array_slice($result, $start, $roundup);
$content .= '<li>';
foreach ($splResult as $row) {
$content = "content goes here";
}
$content .= '</li>';
$start = $start + $roundup;
}
假设我有16个项目。我想得到的结果是(或者至少更好地分发):
<ol>
<li>
<div>1</div>
<div>2</div>
<div>3</div>
</li>
<li>
<div>4</div>
<div>5</div>
<div>6</div>
</li>
<li>
<div>7</div>
<div>8</div>
<div>9</div>
</li>
<li>
<div>10</div>
<div>11</div>
<div>12</div>
</li>
<li>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
</li>
</ol>
注意:数据库中的内容可能在0到100行之间。但它必须始终分为5列。
这里有一个解决方案。不能保证它是最好的。
$cnt = count($result);
// creates an array which evenly distributes numbers across
// a series of entries.
$nums = array(0,0,0,0,0);
for( $i = 0; $i < $cnt; $i++ ) $nums[ $i % 5 ]++;
echo '<ol>';
$k = 0;
for( $i = 0; $i < 5; $i++ )
{
echo '<li>';
// iterate through the count for this column.
for( $j = 0; $j < $nums[ $i ]; $j++ )
{
echo '<div>' . $result[ $k ] . '<div>';
$k++;
}
echo '</li>';
}
echo '</ol>';