php获取目录下所有文件及目录(多种方法)(推荐)


Posted in PHP onMay 14, 2019

获取某目录下所有子文件和子目录

function getDirContent($path){
  if(!is_dir($path)){
    return false;
  }
  //readdir方法
  /* $dir = opendir($path);
  $arr = array();
  while($content = readdir($dir)){
    if($content != '.' && $content != '..'){
      $arr[] = $content;
    }
  }
  closedir($dir); */

  //scandir方法
  $arr = array();
  $data = scandir($path);
  foreach ($data as $value){
    if($value != '.' && $value != '..'){
      $arr[] = $value;
    }
  }
  return $arr;
}

下面介绍的三种方法,是获取某个目录下所有的目录(包括子目录,子孙目录)和文件,直到最里层

方法一

function searchDir($path,&$files){

  if(is_dir($path)){

    $opendir = opendir($path);

    while ($file = readdir($opendir)){
      if($file != '.' && $file != '..'){
        searchDir($path.'/'.$file, $files);
      }
    }
    closedir($opendir);
  }
  if(!is_dir($path)){
    $files[] = $path;
  }
}
//得到目录名
function getDir($dir){
  $files = array();
  searchDir($dir, $files);
  return $files;
}
$filenames = getDir('lss');

foreach ($filenames as $value){
  echo $value.'<br/>';
}

方法二:

function getDir($path){

  if(is_dir($path)){

    $dir = scandir($path);
    foreach ($dir as $value){
      $sub_path =$path .'/'.$value;
      if($value == '.' || $value == '..'){
        continue;
      }else if(is_dir($sub_path)){
        echo '目录名:'.$value .'<br/>';
        getDir($sub_path);
      }else{
        //.$path 可以省略,直接输出文件名
        echo ' 最底层文件: '.$path. ':'.$value.' <hr/>';
      }
    }
  }
}
$path = 'lss';
getDir($path);

方法三:

function getDir($path){
  $arr = array();
    $arr[] = $path;
  if(is_file($path)){

  }else{
    if(is_dir($path)){
      $data = scandir($path);
      if(!empty($data)){
        foreach ($data as $value){
          if($value != '.' && $value != '..'){
            $sub_path = $path."/".$value;
            $temp = getDirContent($sub_path);
            $arr = array_merge($temp,$arr);
          }          
        }

      }
    }
  }

  return $arr;
}
$path = 'lss';
var_dump(getDir($path));

以上所述是小编给大家介绍的php获取目录下所有文件及目录多种方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP生成静态页面详解
Nov 19 PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
关于PHP开发的9条建议
Jul 27 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 #PHP
yii2的restful api路由实例详解
May 14 #PHP
php的扩展写法总结
May 14 #PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 #PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 #PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 #PHP
PHP使用Redis实现Session共享的实现示例
May 12 #PHP
You might like
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
js实现京东轮播图效果
2017/06/30 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
美国玩具公司:U.S.Toy
2018/05/19 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
爽歪歪广告词
2014/03/20 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
深入理解go缓存库freecache的使用
2022/02/15 Golang
vue 给数组添加新对象并赋值
2022/04/20 Vue.js