2012-04-06 8 views
0

Ich habe eine FOR-Schleife, die alle Dateien in einem bestimmten Verzeichnis auflistet. Eines der Ergebnisse ist auch INDEX.PHP, ein Ergebnis, das ich nicht brauche. Es ist das erste Ergebnis/der erste Eintrag der Schleife ...Ignoriere erste Schleife Ergebnis

Gibt es eine Möglichkeit, dieses erste Ergebnis zu überspringen und mit der zweiten Schleife zu beginnen? Bitte helfen.

<?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>'; 
?> 
+2

Geben Sie Ihren Code ein. – m0skit0

Antwort

1

Ich sehe zwei Möglichkeiten, es zu tun:

  • Sie einen Index später beginnen:

Statt for($index = 0; $index < $indexCount; $index++) { ...}, tun

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

  • Sie können fügen Sie auch eine Bedingung hinzu:

zum Beispiel:

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

Aber sie sind ein paar Möglichkeiten, wie Sie Ihren Code verbessern können. Statt opendir() und readdir() verwenden, können Sie nur scandir wie folgt verwenden:

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

} 

Aber es sieht aus wie Sie eine Mediendatei greifen wollen und sie anzuzeigen. So eine noch bessere Lösung wäre, die glob() Funktion zu nutzen, wie folgt aus:

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

Gibt die Schleife die Dateien als Objekte zurück? Dann können Sie einfach eine if-Anweisung zum Dateinamen Parameter

2

Sobald Sie es sehen, was Sie nicht wollen, legen Sie eine continue-Anweisung, die die Schleife für die Bedingung.

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>'; 
     } 
    } 
+0

In diesem Fall wäre es besser, 'for ($ index = 1; $ index <$ indexCount; $ index ++)' zu verwenden, denke ich. – Timur

+0

ja du kannst beides – amd

0

einfach die gewünschte Datei ignorieren, indem Namen der aktuellen Datei zu vergleichen mit der gewünschten. Zum Beispiel können Sie es in der Liste retrieving tun:

$myDirectory = opendir('.'); 

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

closedir($myDirectory); 

nicht auf dem Index (Anzahl der Datei) Verlassen Sie sich, denn Ihre index.php in der Liste nicht zuerst sein kann.

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