Maison > Article > développement back-end > 5 façons d'implémenter des répertoires récursifs en PHP
Cet article présente principalement 5 façons d'implémenter des répertoires récursifs en PHP, qui sont principalement implémentées en utilisant certaines boucles. Les amis intéressés peuvent s'y référer.
Lors du développement du projet, il est inévitable de créer des dossiers sur le serveur, comme le répertoire lors du téléchargement des images, le répertoire lors de l'analyse des modèles, etc. Ceci n'est pas utilisé dans mon projet actuel, j'ai donc résumé plusieurs méthodes de création de répertoires en boucle.
Méthode 1 : Utiliser la boucle globale
<?php //方法一:使用glob循环 function myscandir1($path, &$arr) { foreach (glob($path) as $file) { if (is_dir($file)) { myscandir1($file . '/*', $arr); } else { $arr[] = realpath($file); } } } ?>
Méthode 2 : Utilisez la boucle dir && read
<?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); } } } ?>
Méthode 3 : Utilisez la boucle opendir && readdir
<?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); } } } ?>
Méthode 4 : Utiliser la boucle scandir
<?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); } } } ?>
Méthode 5 : Utiliser la boucle SPL
<?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); } } } ?>
Vous pouvez utiliser xdebug pour tester le durée d'exécution
<?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"; ?>
Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
php Comment sauvegarder automatiquement la table de la base de données
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!