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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
PHP生成加减算法方式的验证码实例
Mar 12 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 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 获取select下拉列表框的值
2010/05/08 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
利用python循环创建多个文件的方法
2018/10/25 Python
Python内置异常类型全面汇总
2020/05/28 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
python定义具名元组实例操作
2021/02/28 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
简历中自我评价分享
2013/10/09 职场文书
银行员工职业规划范文
2014/01/21 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
基于Python实现西西成语接龙小助手
2022/08/05 Golang