我有一个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>';
?>
答案 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
}