In diesem Artikel werden hauptsächlich fünf Möglichkeiten zur Implementierung rekursiver Verzeichnisse in PHP vorgestellt, die hauptsächlich mithilfe einiger Schleifen implementiert werden. Interessierte Freunde können darauf verweisen.
Bei der Projektentwicklung ist es unvermeidlich, Ordner auf dem Server zu erstellen, z. B. das Verzeichnis beim Hochladen von Bildern, das Verzeichnis beim Parsen von Vorlagen usw. Da dies in meinem aktuellen Projekt nicht verwendet wird, habe ich mehrere Methoden zum Erstellen von Verzeichnissen in einer Schleife zusammengefasst.
Methode 1: Glob-Loop verwenden
<?php //方法一:使用glob循环 function myscandir1($path, &$arr) { foreach (glob($path) as $file) { if (is_dir($file)) { myscandir1($file . '/*', $arr); } else { $arr[] = realpath($file); } } } ?>
Methode 2: Verwenden dir && Leseschleife
<?php //方法二:使用dir && read循环 function myscandir2($path, &$arr) { $dir_handle = dir($path); while (($file = $dir_handle->read()) !== false) { $p = realpath($path . '/' . $file); if ($file != "." && $file != "..") { $arr[] = $p; } if (is_dir($p) && $file != "." && $file != "..") { myscandir2($p, $arr); } } } ?>
Methode 3: Opendir && readdir Schleife verwenden
<?php //方法三:使用opendir && readdir循环 function myscandir3($path, &$arr) { $dir_handle = opendir($path); while (($file = readdir($dir_handle)) !== false) { $p = realpath($path . '/' . $file); if ($file != "." && $file != "..") { $arr[] = $p; } if (is_dir($p) && $file != "." && $file != "..") { myscandir3($p, $arr); } } } ?>
Methode 4: Scandir-Schleife verwenden
<?php //方法四:使用scandir循环 function myscandir4($path, &$arr) { $dir_handle = scandir($path); foreach ($dir_handle as $file) { $p = realpath($path . '/' . $file); if ($file != "." && $file != "..") { $arr[] = $p; } if (is_dir($p) && $file != "." && $file != "..") { myscandir4($p, $arr); } } } ?>
Methode 5: SPL-Schleife verwenden
<?php //方法五:使用SPL循环 function myscandir5($path, &$arr) { $iterator = new DirectoryIterator($path); foreach ($iterator as $fileinfo) { $file = $fileinfo->getFilename(); $p = realpath($path . '/' . $file); if (!$fileinfo->isDot()) { $arr[] = $p; } if ($fileinfo->isDir() && !$fileinfo->isDot()) { myscandir5($p, $arr); } } } ?>
Sie können xdebug verwenden, um die Laufzeit zu testen
<?php myscandir1('./Code',$arr1);//0.164010047913 myscandir2('./Code',$arr2);//0.243014097214 myscandir3('./Code',$arr3);//0.233012914658 myscandir4('./Code',$arr4);//0.240014076233 myscandir5('./Code',$arr5);//0.329999923706 //需要安装xdebug echo xdebug_time_index(), "\n"; ?>
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
Redis Multi-Library-Auswahlfunktion Singleton-Klasse in PHP implementiert (ausführliche Erklärung)
php So sichern Sie die Datenbanktabelle automatisch
Das obige ist der detaillierte Inhalt von5 Möglichkeiten, rekursive Verzeichnisse in PHP zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!