PHP遍历一个文件夹下所有文件和子文件夹中的所有文件,输出文件名称、清除数组中的空值,并重新排列数组键值

/遍历文件夹和子文件夹中所有文件名,输出文件名
<?php
function my_dir($dir) {
    $files = array();
    if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)
        while(($file = readdir($handle)) != = false) {
            if($file != ".." && $file != ".") { //排除根目录;
                if(is_dir($dir."/".$file)) { //如果是子文件夹,就进行递归
                    $files[$file] = my_dir($dir."/".$file);
                } else { //不然就将文件的名字存入数组;
                    $files[] = $file;
                }
 
            }
        }
        closedir($handle);
        return $files;
    }
}
echo "<pre>";
print_r(my_dir("."));
echo "</pre>";



/遍历文件夹和子文件夹中所有文件名,输出所在路径+文件名
<?php	
 
function my_dir($dir) {
	$filess = array();
    $files = array();
    $numsk=0; //计算总数的
    if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)
        while(($file = readdir($handle)) !=false) {
            if($file != ".." && $file != ".") { //排除根目录;
                if(is_dir($dir."/".$file)) { //如果是子文件夹,就进行递归
                    $files[$file] = my_dir($dir."/".$file); 
  将路径写入数组中,方便操作文件和保存///                  
                    $num = count($files[$file]); 
                    for( $nums= 0;$nums <$num;$nums++)
                    {
                    	$filess[$numsk] =  $files[$file][$nums]; 
                          $numsk = $numsk +1;
                    }
      

                } else { //不然就将文件的名字存入数组;
                    $files[] = $dir."/".$file;

  ///将路径写入数组中,方便操作文件和保存/    
                    $numfil = count($files);
                    for($numsa=0;$numsa <$numfil;$numsa++)
                    { 
                    	$filess[$numsa+$numsk] =   $files[$numsa]; 
                          $numsk = $numsk +1;
                    }
      
 
                }
 
            }
        }
        closedir($handle);
        
        return $filess;
    }
}
echo "<pre>";
//print_r(my_dir("."));
echo "</pre>";

$files = my_dir('./TS');
$files = array_filter($files);//删除数组中空的元素
 var_dump($files);





//array_filter()函数的功能是利用回调函数来对数组进行过滤,如果没有回调函数,那么默认就是删除数组中值为false的项目。
例如:
$FileArray=array(0=>'1',1=>'',2=>'',3=>'go');
var_dump(array_file($FileArray))
输出结果为:
array(size=2)
    0 => string '1' (length=1)
    3 => string 'go' (length=2)
这样就引申出来一个新问题,如果我想对array_filter()处理过的新数组的键名序列化成0,1,2,3这样的怎么办呢?
这在数组比较中是很有用的,这里有两个函数可以选择array_values(),sort(). 
 
array_values()返回数组中所有的值,并给其建立数字索引。(注意,用这个之后key就是数字索引了)
 
sort()对数组进行排序。当函数结束时数组单元将被从最低到最高重新安排。成功返回true (注意: 本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。 )*sort函数返回值是布尔类型。
 
这里我选择了array_values()函数来处理:

var_dump(array_values(array_filter($FileArray)));
输出结果为:
array(size=2)
    0 => string '1' (length=1)
    1=> string 'go' (length=2)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值