时间:2021-07-01 10:21:17 帮助过:43人阅读
项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等。这不当前手下的项目就用到了这个,于是总结了几个循环创建目录的方法。
方法一:使用glob循环
- <?php
- //方法一:使用glob循环
- function myscandir1($path, &$arr) {
- foreach (glob($path) as $file) {
- if (is_dir($file)) {
- myscandir1($file . '/*', $arr);
- } else {
- $arr[] = realpath($file);
- }
- }
- }
- ?>
方法二:使用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);
- }
- }
- }
- ?>
方法三:使用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);
- }
- }
- }
- ?>
方法四:使用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);
- }
- }
- }
- ?>
方法五:使用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);
- }
- }
- }
- ?>
可以用xdebug测试运行时间
- <?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";
- ?>
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关推荐:
PHP实现的Redis多库选择功能单例类(详解)
PHP自定义函数判断是否为Get/Post/Ajax提交的方法详解
php自动备份数据库表的方法
以上就是PHP实现递归目录的5种方法的详细内容,更多请关注Gxl网其它相关文章!