忽略第一个循环结果

时间:2012-04-06 12:04:33

标签: php loops for-loop

我有一个FOR循环,列出某个目录中的所有文件。其中一个结果也是INDEX.PHP,这是我不需要的结果。这是循环的第一个结果/输入......

有没有办法跳过第一个结果并从第二个结果开始循环? 请帮忙。

    <?php
$myDirectory = opendir('.');

while($entryName = readdir($myDirectory)) 
{
    $dirArray[] = $entryName;
}

closedir($myDirectory);

$indexCount = count($dirArray);
echo '<h5>There are ' . $indexCount . ' files in the Media Center</h5>';

sort($dirArray);

echo '<table width="100%">';
echo '<tr>';
echo '<th width="33%" align="center" class="admin_th" style="border-radius: 10px 0 0 0">Download</th>';
echo '<th width="33%" align="center" class="admin_th">Filetype</th>';
echo '<th width="33%" align="center" class="admin_th" style="border-radius: 0 10px 0 0">Filesize (in bytes)</th>';
echo '</tr>';

for($index = 0; $index < $indexCount; $index++) 
{
    if (substr("$dirArray[$index]", 0, 1) != ".")
    {
        echo '<tr><td width="33%" align="center" class="admin_td-even"><a href="' . $dirArray[$index] . '">' . $dirArray[$index] . '</a></td>';
        echo '<td width="33%" align="center" class="admin_td-odd">';
        echo strtoupper(substr($dirArray[$index], -3));
        echo '</td>';
        echo '<td width="33%" align="center" class="admin_td-even">';
        echo filesize($dirArray[$index]);
        echo '</td>';
        echo '</tr>';
    }
}
echo '</table>';
?>

6 个答案:

答案 0 :(得分:2)

只要您看到它不想要的内容,请放置一个continue语句,该语句将循环备份为条件。

答案 1 :(得分:1)

我看到两种方法:

  • 您可以稍后启动一个索引:

而不是for($index = 0; $index < $indexCount; $index++) { ...}, 做

for($index = 1; $index < $indexCount; $index++) { ...}

  • 您还可以添加条件:

例如:

for ($index = 0; $index < $indexCount; $index++) {
  if ($dirArray[$index] == 'INDEX.PHP') continue;
  // rest of the loop
}

但是他们可以通过几种方法来改进您的代码。您可以像这样使用scandir,而不是使用opendir()readdir()

foreach (scandir('.') as $file) {

}

但看起来你想抓住一些媒体文件并显示它们。因此,更好的解决方案是使用glob()函数,如下所示:

foreach (glob("*{.mp3,.mp4,.jpg,.png}", GLOB_BRACE) as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}

答案 2 :(得分:0)

循环是否将文件作为对象返回?然后你可以在文件名参数

中添加一个if语句

答案 3 :(得分:0)

    for($index = 0; $index < $indexCount; $index++) 
    {
        //skip first entry
        if($index == 0) continue;
        if (substr("$dirArray[$index]", 0, 1) != ".")
        {
            echo '<tr><td width="33%" align="center" class="admin_td-even"><a href="' . $dirArray[$index] . '">' . $dirArray[$index] . '</a></td>';
            echo '<td width="33%" align="center" class="admin_td-odd">';
            echo strtoupper(substr($dirArray[$index], -3));
            echo '</td>';
            echo '<td width="33%" align="center" class="admin_td-even">';
            echo filesize($dirArray[$index]);
            echo '</td>';
            echo '</tr>';
        }
    }

答案 4 :(得分:0)

通过将当前文件的名称与所需文件进行比较,忽略所需文件。例如,您可以在列表检索中执行此操作:

$myDirectory = opendir('.');

while( false!==($entryName = readdir($myDirectory)) ) 
{
    if( strtolower($entryName)=='index.php' )continue;
    $dirArray[] = $entryName;
}

closedir($myDirectory);

不要依赖索引(文件数),因为您的index.php可能不在列表的第一位。

答案 5 :(得分:0)

for($index = 0; $index < $indexCount; $index++) {
 if(index == 0) continue;
 // other stuff
}