天空之城

您当前位置>>首页>>其它>>代码集>>PHP遍历目录文件

PHP遍历目录文件

来源:天空之城 - My Site   时间:2014-04-02 22:30:34   编辑:administrator   阅读数:114

[导读]遍历目录文件,参数设置有子目录时显示一维数组(可加上级目录名)或者多维数组

<?php
/**
 * 
 * 遍历目录文件
 * @param string $dir
 * @param int $show_subdir是否显示上级目录(或以数组显示目录)
 */
function list_all_file($dir, $show_subdir=0)
{
    
    if(!is_dir($dir)) return false;
    $file = scandir($dir);
    
    $all_file = array();
    
    foreach($file as $filename)
    {
        if($filename!='.' && $filename!='..')
        {
            if(is_dir($dir.'/'.$filename))
            {
                if(empty($show_subdir))
                {
                    foreach(list_all_file($dir.'/'.$filename,$show_subdir) as $val)
                    {
                        $all_file[] = $val;
                    }
                }elseif($show_subdir==2){
                    foreach(list_all_file($dir.'/'.$filename,$show_subdir) as $val)
                    {
                        $all_file[] = $filename.'/'.$val;
                    }
                }else{
                    $all_file[$filename] = list_all_file($dir.'/'.$filename,$show_subdir);
                }
            }else{
                $all_file[] = $filename;
            }
        }
    }
    
    return $all_file;
    
}

var_dump(list_all_file(dirname(__FILE__)));
echo '<p>';
var_dump(list_all_file(dirname(__FILE__),1));
echo '<p>';
var_dump(list_all_file(dirname(__FILE__),2));

 

参数较多的一个方法,看着有点累,if太多了,就不重构了

/**
 * 
 * 遍历目录文件,可按条件匹配
 * @param string $dir
 * @param array  $file_type
 * @param int $show_sub_arr是否已数组形式显示子目录及文件
 * @param int $is_show_dir是否加上目录
 */
function myScanDir($dir,$file_type='',$show_sub_arr=0,$is_show_dir=0){
    $file_arr = array();
    $files    = scandir($dir);
    if(!empty($files) && count($files)!=2){
        foreach($files as $k=>$filename){
            if($filename!='.' && $filename!='..'){
                if(empty($file_type)){
                    if(is_dir($dir.'/'.$filename)){
                        if(empty($show_sub_arr)){
                            $file_arr   = array_merge($file_arr,myScanDir($dir.'/'.$filename,'',0,$is_show_dir));
                        }else{
                            $sub_files  = myScanDir($dir.'/'.$filename,'',$show_sub_arr);
                            if(!empty($sub_files)) $file_arr[$filename] = $sub_files;
                        }
                    }else{
                        if(empty($is_show_dir)){
                            $file_arr[] = $filename;
                        }else{
                            $file_arr[] = $dir.'/'.$filename;
                        }
                    }
                }else{
                    if(is_dir($dir.'/'.$filename)){
                        if(empty($show_sub_arr)){
                            $file_arr   = array_merge($file_arr,myScanDir($dir.'/'.$filename,$file_type,0,$is_show_dir));
                        }else{
                            $sub_files  = myScanDir($dir.'/'.$filename,$file_type,$show_sub_arr);
                            if(!empty($sub_files)) $file_arr[$filename] = $sub_files;
                        }
                    }else{
                        if(is_array($file_type)){
                            if(preg_match($file_type[0],$filename)){
                                if(empty($is_show_dir)){
                                    $file_arr[] = $filename;
                                    continue;
                                }else{
                                    $file_arr[] = $dir.'/'.$filename;
                                    continue;
                                }
                            }
                        }else{
                            if(false!=stristr($filename,$file_type)){
                                if(empty($is_show_dir)){
                                    $file_arr[] = $filename;
                                }else{
                                    $file_arr[] = $dir.'/'.$filename;
                                }
                                continue;
                            }
                        }
                    }
                }
            }
        }
    }
    return $file_arr;
}

PHP遍历目录文件
原文地址:

上一篇:PHP实现猴子选大王算法(约瑟夫环)
下一篇:九个PHP很有用的功能(转)

    相关文章

    更多»
      just do it
      天空之城天空之城