zoukankan      html  css  js  c++  java
  • PHP递归目录的5种方法

    <?php
    //方法一:使用glob循环
    
    function myscandir1($path, &$arr) {
    
        foreach (glob($path) as $file) {
            if (is_dir($file)) {
                myscandir1($file . '/*', $arr);
            } else {
    
                $arr[] = realpath($file);
            }
        }
    }
    
    
    //方法二:使用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循环
    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循环
    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循环
    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测试运行时间
    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(), "
    ";
    ?>
    
  • 相关阅读:
    平台调用中的数据封送处理
    JavaScript 中的事件流
    Jquery插件 表格固定表头
    ASP.NET MVC Action Filter与内置的Filter实现
    getCurrentScript的改进
    analyze spring framework source
    Windows Azure: Service Bus Brokered Messaging DeadLetterQueue 使用详解
    C#截图
    权限系统
    音乐播放器
  • 原文地址:https://www.cnblogs.com/chenpingzhao/p/4530357.html
Copyright © 2011-2022 走看看