Aktueller Standort: Startseite> Neueste Artikel> Wie verwendet ich PHP Rewinddir- und Readdir -Funktionen, um den Verzeichnisgehalt effizient zu lesen?

Wie verwendet ich PHP Rewinddir- und Readdir -Funktionen, um den Verzeichnisgehalt effizient zu lesen?

gitbox 2025-08-04
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dies hängt nicht mit dem Inhalt des Artikels zusammenPHPCodebeispiel,Die Initialisierung kann platziert werden、Konfiguration und andere Inhalte</span></span><span>
</span><span><span class="hljs-comment">// Zum Beispiel,Legen Sie die Zeitzone fest</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h2>PHP rewinddirUndreaddirSo verwenden Sie Funktionen, um den Verzeichnisgehalt effizient zu lesen?</h2>

<p>existierenPHPMitte,Beim Betrieb des Verzeichnisinhalts,Häufig verwendete Funktionen umfassen <code></span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>()

2. Die Rolle von Rewinddir ()

rewinddir () repointiert den Verzeichnis den Zeiger zum Beginn des Verzeichnisses. Das heißt, Sie können diese Funktion aufrufen, wenn Sie bis zum Ende des Verzeichnisses gelesen haben, aber erneut von Grund auf neu durchqueren möchten.

3.. So verwenden Sie zusammen Rewinddir und Readdir zusammen

In praktischen Anwendungen ist es manchmal erforderlich, den Inhalt desselben Verzeichnisses mehrmals zu lesen, z. Zu diesem Zeitpunkt kann die Verwendung von Rewinddir () wiederholte Aufrufe bei Opendir () vermeiden und die Effizienz verbessern.

 
</span><span><span class="hljs-variable">$dir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'/path/to/dir'</span></span><span>);

</span><span><span class="hljs-comment">// Der erste Traversal:Lesen Sie alle Dateien,Finden Sie alles heraus.phpdokumentieren</span></span><span>
</span><span><span class="hljs-variable">$phpFiles</span></span><span> = [];
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, PATHINFO_EXTENSION) === </span><span><span class="hljs-string">'php'</span></span><span>) {
        </span><span><span class="hljs-variable">$phpFiles</span></span><span>[] = </span><span><span class="hljs-variable">$file</span></span><span>;
    }
}

</span><span><span class="hljs-comment">// Kehren Sie zum Beginn des Verzeichnisses zurück,Einen zweiten Traversal durchführen(Bei Bedarf)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">rewinddir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);

</span><span><span class="hljs-comment">// Der zweite Traversal:打印所有dokumentieren名,Demo -Nutzungrewinddir</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"dokumentieren名: <span class="hljs-subst">$file</span></span></span><span>\n";
}

</span><span><span class="hljs-title function_ invoke__">closedir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);

4. Wann ist es effizienter, Rewinddir zu verwenden?
  • Wenn Sie das gleiche Verzeichnis mehrmals mehrmals durchqueren müssen, vermeiden Sie es , Opendir () und Closedir () mehrmals anzurufen, um Systemressourcen zu sparen.
  • Wenn Sie eine komplexe Logik kombinieren, können Sie zuerst die Filterung durchqueren, dann zum Verzeichnisheader zurückkehren und die zweite Operationsrunde durchführen.

5. Dinge zu beachten
  • Der Verzeichnisgriff muss nach dem Gebrauch geschlossen werden und Closedir () aufrufen.
  • In einigen Systemen oder PHP -Umgebungen kann die Verwendung von Rewinddir () , wenn sich der Verzeichnisinhalt ändert, inkonsistent sein. Es wird empfohlen, das Verzeichnisgriff wieder zu öffnen, nachdem Änderungen am Verzeichnis vorgenommen wurden.

Zusammenfassen

Durch die angemessene Zusammenarbeit von Rewinddir () und Readdir () können PHP -Programme effizient und flexibel das Verzeichnisinhalt lesen, den Ressourcenverbrauch reduzieren und die Wartbarkeit und Leistung von Code verbessern.