如何“捕获”列表中的每个第7项?

时间:2010-10-26 13:47:36

标签: php

我正在使用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 个答案:

答案 0 :(得分:7)

这些方面的东西:

echo '<div>';

$i = 0;
foreach ($dir as $fileinfo) {
   if($i % 7 == 0 && $i != 0) {
       echo '</div><div>';
   }
   // do stuff
   $i++;
}

echo '</div>';

答案 1 :(得分:3)

或类似

$chunk_size = 7;
foreach (array_chunk($dir, $chunk_size) as $chunk) {
   echo '<div>';
   foreach ($chunk as $fileinfo) {
      // echo list item $fileinfo here
   }
   echo '</div>';
}

答案 2 :(得分:2)

尝试使用mod运算符(%)来确定当前文件号是否为第7个:

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

(代码未经测试但应该有效)

编辑:为$ i使用了一个独立的计数器,因为索引似乎从2开始,而不是预期的0。

答案 3 :(得分:1)

类似于此的Somesthing:

$c = 0;
foreach ($files as $file) {
  echo $file;
  if ($c % 7 == 0) {
    //7th file
  }
  $c++;
}

答案 4 :(得分:1)

使用mod 7

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

对于这个i Php的语法不是100%肯定,但必须是一些

答案 5 :(得分:1)

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

答案 6 :(得分:1)

或者(丢弃%运算符并输入更多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";
}

答案 7 :(得分:0)

使用此代码:

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