坚持简单的PHP循环逻辑

时间:2016-10-10 11:44:36

标签: php arrays

我有array可以有任何不。其中的元素。现在我想循环这个数组并创建设计,使每个li内部可以有15个元素,下一组li将基于15个元素的倍数创建。

现在我的数组中有15个元素和我正在尝试创建2 li的代码,它应该只创建1个li

可能是我的逻辑太糟糕了,或者我错过了什么。

这是我的代码: -

  <?php $result = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); ?>
    <div class="slide">
    <?php $design = '<ul class="slides"><li><div class="MainSlider">';
        foreach($result as $key=>$row) 
        {
            $design .= '<div class="MainSliderPic">'.$key.'</div>';
            if(($key+1)% 15 == 0){
            $design .= '</div></li><li><div class="MainSlider">';
            }

            if(count($result) == $key+1){     
            $design .= '</div></li></ul>';
            }
        }
    echo $design;
    ?>
    </div> 

3 个答案:

答案 0 :(得分:2)

您可以使用array_chunk来实现它:

$result = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);

$chunks = array_chunk($result, 15);

foreach ($chunks as $chunk) {
    echo '<ul><li>';

    echo implode('</li><li>', $chunk);

    echo '</li></ul>';
}

答案 1 :(得分:1)

请尝试以下代码:

<?php $result = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); ?>
    <div class="slide">
    <?php $design = '<ul class="slides"><li><div class="MainSlider">';
        foreach($result as $key=>$row) 
        {
            $design .= '<div class="MainSliderPic">'.$key.'</div>';
            if((($key+1)% 15 == 0) && (count($result) != ($key+1))){
            $design .= '</div></li><li><div class="MainSlider">';
            }

            if(count($result) == $key+1){     
            $design .= '</div></li></ul>';
            }
        }
    echo $design;
    ?>
    </div> 

答案 2 :(得分:1)

不要在代码中混合标记的打开和关闭。分开进行,例如

$design = '<ul class="slides">';
$n = 0;
foreach($result as $key=>$row) {
    if ($n == 0)
        $design .= '<li><div class="MainSlider">';

    $design .= '<div class="MainSliderPic">' . $key . '</div>';

    ++$n;
    if ($n == 15) {
        $design .= '</div></li>';
        $n = 0;
    }
}

$design .= '</ul>';
echo $design;