代码之家  ›  专栏  ›  技术社区  ›  Steven

如何“捕捉”列表中的每7项?

php
  •  3
  • Steven  · 技术社区  · 14 年前

    我在用 DirectoryIterator 列出文件。在这个场景中,我的目录包含19个文件。

    我需要创建一个列表,将7个文件包装成 <div> .

    我一定很累了,因为我不能完成这个简单的任务。

    我的代码已更新,以反映以下建议 :

    $i = 0;
    echo '<div class="first_div">';
    
    foreach ($dir as $fileinfo) {
      if ($fileinfo->isFile()) {
        if(($i % 7 == 0) && ($i > 0) )
          echo '</div><div>';
    
        echo 'My file';
        $i++;
      }
    }
    echo '</div>';
    

    任何帮助都会被逮捕。

    8 回复  |  直到 11 年前
        1
  •  2
  •   Colin O'Dell    14 年前

    echo "<div>";
    $i = 0;
    foreach ($dir as $fileinfo) {
       // Remainder is 0, so its the first of 7 files. 
       // Skip this for the first one, or we'll get a blank div to start with
       if($i % 7 == 0 && $i>0) echo "</div><div>";
       echo $filenamehere;
       $i++;
    }
    echo "</div>";
    

        2
  •  7
  •   Tatu Ulmanen    14 年前

    echo '<div>';
    
    $i = 0;
    foreach ($dir as $fileinfo) {
       if($i % 7 == 0 && $i != 0) {
           echo '</div><div>';
       }
       // do stuff
       $i++;
    }
    
    echo '</div>';
    
        3
  •  3
  •   Yanick Rochon    14 年前

    $chunk_size = 7;
    foreach (array_chunk($dir, $chunk_size) as $chunk) {
       echo '<div>';
       foreach ($chunk as $fileinfo) {
          // echo list item $fileinfo here
       }
       echo '</div>';
    }
    
        4
  •  1
  •   TheHippo    14 年前

    $c = 0;
    foreach ($files as $file) {
      echo $file;
      if ($c % 7 == 0) {
        //7th file
      }
      $c++;
    }
    
        5
  •  1
  •   David Mårtensson    14 年前

    $counter += 1;
    if($counter % 7 = 0)
        //New div
    

        6
  •  1
  •   Silver Light    14 年前

    array_chunk()

    <?
    $dir_chunks = array_chunk($dir, 7);
    
    foreach($dir_chunks as $dir)
    {
        echo '<div>';
        foreach ($dir as $fileinfo) {
          if ($fileinfo->isFile()) {
             // build list here
          }
        }
        echo '</div>';
    }   
    ?>
    
        7
  •  1
  •   VolkerK    14 年前

    SPL

    <?php
    $path = '......';
    $nrit = new NoRewindIterator(new DirectoryIterator($path));
    while ( $nrit->valid() ) {
      echo "<div>\n";
      foreach( new LimitIterator($nrit, 0, 7) as $it ) {
        echo '  ', $it, "\n";
      }
      echo "</div>\n";
    }
    
        8
  •  0
  •   GDP Danny    12 年前

    if(($i-2) % 7 == 0)