dougong1031 2015-12-01 21:25
浏览 146
已采纳

重置foreach循环内的计数器

I am trying to create a simple foreach loop that will group every 16 records in the array. I have also another counter ($s) which I need to be reseted after 4.

Here is my code

$a = array(
  'book-1' => 'Book Title 1',
  'book-2' => 'Book Title 2',
  'book-3' => 'Book Title 3',
  'book-4' => 'Book Title 4',
  'book-5' => 'Book Title 5',
  'book-6' => 'Book Title 6',
  'book-7' => 'Book Title 7',
  'book-8' => 'Book Title 8',
  'book-9' => 'Book Title 9'
);

$i = 1;
$bookshelf = 1;
$s=0;
foreach ( $a as $k => $v ) 
{

    if ($i == 9 || $i == 1)
    {  
      echo '<div id="bookshelf-'.$bookshelf.'"></div>';
      $bookshelf++;
    }


    if ($i%4 == 1)
    {  
      echo '<div class="bookshelf-bottom">';
    }

    if ($i > 5)
    {  
      $s=0;
    }

    $s++;

    echo '<div class="book-frame-'.$s.'">'.$v.'</div>';

    if ($i%4 == 0)
    {
      echo '</div>';
    }

    $i++;
}
if ($i%4 != 1) echo '</div>';

What I am trying to export is :

<div id="bookshelf-1" class="bookshelf-top"></div>

<div class="bookshelf-bottom">
<div class="book-frame-1">Book Title 1</div>
<div class="book-frame-2">Book Title 2</div>
<div class="book-frame-3">Book Title 3</div>
<div class="book-frame-4">Book Title 4</div>
</div>

<div class="bookshelf-bottom">
<div class="book-frame-1">Book Title 5</div>
<div class="book-frame-2">Book Title 6</div>
<div class="book-frame-3">Book Title 7</div>
<div class="book-frame-4">Book Title 8</div>
</div>

<div class="bookshelf-bottom">
<div class="book-frame-1">Book Title 9</div>
</div>
  • 写回答

2条回答 默认 最新

  • douyi1855 2015-12-01 21:39
    关注

    Have a look

    <?php
    $a = array(
        'book-1' => 'Book Title 1',
        'book-2' => 'Book Title 2',
        'book-3' => 'Book Title 3',
        'book-4' => 'Book Title 4',
        'book-5' => 'Book Title 5',
        'book-6' => 'Book Title 6',
        'book-7' => 'Book Title 7',
        'book-8' => 'Book Title 8',
        'book-9' => 'Book Title 9'
    );
    
    $i = 1;
    $bookshelf = 1;
    $s=0;
    foreach ( $a as $k => $v ) {
        $s++;
        if ($i == 9 || $i == 1) {
            if($i == 1)
                echo '<div id="bookshelf-'.$bookshelf.'" class="bookshelf-top"></div>';
            else
                echo '<div id="bookshelf-'.$bookshelf.'"></div>';
          $bookshelf++;
        }
        if($s == 1)
            echo '<div class="bookshelf-bottom">';
        echo '<div class="book-frame-'.$s.'">'.$v.'</div>';
        if($s == 4) {
            echo '</div>';
            $s = 0;
        }
        $i++;
    }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于单片机数字电压表电路组成及框图
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line