Php打破了ul li

时间:2015-07-09 08:25:21

标签: php

我在ul列表中显示php中的图像。我想在我的ul中显示5 li然后在2 li之后再显示5 li。我正在使用此代码,但每行显示5 li。

if (displayBoxIndex >= oBoxCollection.length){
       //1.  
            alert("No More..")
        //2.  
             return
    }
        
  • DFFF
  •     
  • fdfddf
  •     
  • FDFD
  •     
  • FFD
  •     
  • FDFD
        
  • FDDF
  •     
  • dfdf
        
  • FDDF
  •     
  • dfdf
  •     
  • dfdf
  •     
  • FDDF
  •     
  • FDDF
        
  • FDFD
  •     
  • FDDF
  •     
  • FDDF
  •     
  • FDFD
  •     
  • FDDF

6 个答案:

答案 0 :(得分:2)

希望此解决方案可以帮助您: 当你想要在5,2,5之后休息时,不要拿一个数组数组(5,2,5)而不是break_after = 5。 break_after = 5 将每隔5个间隔对ul进行一次破坏。我对你的逻辑有一些改变:

 $data = array(1,2,3,4,5,6,7,8,9,10,11,12);

  $break_after = array(5,2,5);

  $counter = 0;   
  $break_key=0;
  $totalNumber = count($data);                    
  foreach ($data as $item){
    if ($counter % $break_after[$break_key] == 0){
        echo '<ul>';
    }

    echo '<li>'.$item.'</li>';    

    if ($counter % $break_after[$break_key] == ($break_after[$break_key]-1) || $counter ==   $totalNumber-1) {
        echo '</ul>';
        ++$break_key;
        $counter = 0;
    }else{
    ++$counter;
    }
  }

同样的输出是:

<ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

<ul><li>6</li><li>7</li></ul>

<ul><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>

答案 1 :(得分:1)

对于数组中的多个值。

 $data = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36);

 $break_after = array(5,2,5);

 $counter = 0;   

 $break_key=0;

 $totalNumber = count($data);                    

 foreach ($data as $item){
    if ($counter % $break_after[$break_key] == 0){
        echo '<ul>';
    }

    echo '<li>'.$item.'</li>';    

    if ($counter % $break_after[$break_key] == ($break_after[$break_key]-1)) {
        echo '</ul>';
        ++$break_key;
        if(count($break_after)==($break_key)){
            $break_key=0;
        }
        $counter = 0;
    }else{
        ++$counter;
    }
  }

&GT;

答案 2 :(得分:0)

与varunsinghal和Vivek Tankaria完全相同的答案,但重构了逻辑和视图:

<?php
    $pattern = [5, 2, 5, 5];
    $data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];
    if (count($data) < array_sum($pattern)) {
        throw new Exception('Please provide at least the same amount of data as lines required in the pattern');
    }
?>

<?php foreach ($pattern as $limit): ?>
<ul>
    <?php for ($i = 0; $i < $limit; $i++): ?>
    <li><?= $data[$i]; ?></li>
    <?php endfor; ?>
</ul>
<?php endforeach; ?>

答案 3 :(得分:0)

要实现您想要的目标,请使用以下内容:

<?php
  $data = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22);
 $total = count($data);
 foreach ($data as $index => $item)
 {
  if ($index == 0 || $index == 5 || $index == 7 || ($index > 8 && ($index - 2) % 5 == 0))
  {
    echo '<ul>';
  }
  echo '<li>'.$item.'</li>';
  if ($index == 4 || $index == 6 || $index == $total - 1 || ($index > 6 && ($index - 2) % 5 == 4)) {
    echo '</ul>';
  }
}

答案 4 :(得分:0)

你可以试试这个逻辑

<?php
    $data = array(1,2,3,4,5,6,7,8,9,10,11,12);
    $breakPoint=4;
    $ct=1;
    echo '<ul>';
    foreach($data as $k=>$v){
        echo '<li>'.$v.'</li>';
        if($breakPoint == $k && $ct==1){
            $breakPoint=$breakPoint+2;
            $ct=2;
            echo '</ul><br/><ul>';
        }elseIf($breakPoint == $k && $ct==2){
            $breakPoint=$breakPoint+5;
            $ct=1;
            echo '</ul><br/><ul>';
       }
   }
   echo '</ul>';
  ?>

输出:

1 2 3 4 5

6 7

8 9 10 11 12

答案 5 :(得分:-2)

第一次休息是5,所以$i将是4,然后是2个元素,所以$i将是6.之后,每5个元素之后需要休息,所以我们有5 + 2 + 5 = 12个元素给出$i=11所以类似地,其他断点将是11 16 21 26 31 36,依此类推。

<ul>
<?php
$i=0;
foreach($data as $item){
echo '<li>'.$item.'</li>';
if($i==4 || $i==6 || $i==11 || $i==16 || $i==21 || $i==26){
echo '</ul><ul>';
}
$i++;
}
?>
</ul>