2016-10-10 133 views
1

我有一个array它可以有任何没有。的元素。现在我想循环这个数组并创建设计,使得每个li可以包含15个元素,下一组li将基于15个元素的倍数创建。坚持简单的PHP循环逻辑

现在我的数组有精确的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> 
+0

'如果(($键+ 1)%15 == 0){'%操作应该是它意味着如果$关键的余除以15就是等于15这样做的问题... –

+0

&只是一点输入: 在你的第6行你写了'。$ key'。 ...确定你想输出密钥而不是数值? (可以通过用$ row替换$ key来完成) – Twinfriends

+0

根据你的条件,你有15条记录,所以当你的'modulo(%)'条件成立时,关闭'li'并重新开始'li',最后记录它结束'li'和div,所以如果你有'15,30,45 ...'记录,你会得到一个额外的'li',它是空白的 – KinjalMistry

回答

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; 
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

可以使用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>'; 
}