根据固定<;李>;列


Divide rows from db against fixed <li> columns in PHP

我做了一次搜索,但没有发现任何相同或有帮助的东西。

我有来自数据库的行,我想做的是将其划分为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>';