当我对接小发猫API的时候,需要php获取文件夹下所有文件名,我们有时候需要读取目录里面的内容,在 PHP 有多个函数可以获取文件系统目录信息,今天就给大家分享 PHP 遍历目录的三种方法。

php获取文件夹下所有文件名实现代码:

1、用 dir() 返回对象

function listDir($dir){    $mydir = dir($dir);    echo "<ul>";    while($file = $mydir->read()){        if((is_dir("$dir/$file"))){            echo "<li>$file</li>";            listDir("$dir/$file");        }        elseif($file!=="."&$file!=="..")        echo "<li><a href='$dir/$file' target='_blank'>$file</a></li>";    }    echo "</ul>";    $mydir->close();}listDir(".");

2、使用 readdir() 函数

function listDir2($dir) {    $mydir=opendir($dir);    echo "<ul>";    while(($file=readdir($mydir))!==false) {        if ($file!='.'&&$file!='..') {            if (is_dir($file)) {                echo "<li class='dir'>$file</li>";                listDir2("$dir/$file");            }else{                echo "<li class='file'><a href='$dir/$file' target='_blank'>$file</a></li>";            }        }    }    closedir($mydir);    echo "</ul>";}listDir2('.');

3、使用 scandir() 函数

function listDir3($dir) {    $mydir=scandir($dir);    echo "<ul>";    foreach ($mydir as $key => $value) {        if ($value!='.'&&$value!='..') {            if (is_dir($value)) {                echo "<li class='dir'>$value</li>";                listDir3("$dir/$value");            }else{                echo "<li class='file'><a href='$dir/$value' target='_blank'>$value</a></li>";            }        }    }    echo "</ul>";}listDir3(".");

对于上面提到的3个php函数,对执行速度没有做过测试,你可以按照你的习惯和喜欢选用一个。

$path = './use';
$result = scanFile($path);
function scanFile($path) {global $result;$files = scandir($path);foreach ($files as $file) {if ($file != '.' && $file != '..') {if (is_dir($path . '/' . $file)) {scanFile($path . '/' . $file);} else {$result[] = basename($file);}}}return $result;
}

php使用递归的方法删除目录中的所有文件

function delDir($directory){//自定义函数递归的函数整个目录if(file_exists($directory)){//判断目录是否存在,如果不存在rmdir()函数会出错if($dir_handle=@opendir($directory)){//打开目录返回目录资源,并判断是否成功while($filename=readdir($dir_handle)){//遍历目录,读出目录中的文件或文件夹if($filename!='.' && $filename!='..'){//一定要排除两个特殊的目录$subFile=$directory."/".$filename;//将目录下的文件与当前目录相连if(is_dir($subFile)){//如果是目录条件则成了delDir($subFile);//递归调用自己删除子目录}if(is_file($subFile)){//如果是文件条件则成立unlink($subFile);//直接删除这个文件}}}closedir($dir_handle);//关闭目录资源rmdir($directory);//删除空目录}}
}

正因为来之不易,所以才有了后来的倍加珍惜。

过去的几周对我来说是一段相当复杂的经历。我们公司进行了大裁员,我是其中之一,但却体验到了其中的乐 趣。我从来没有被开除过,所以很难不去想得太多。我开始浏览招聘板块,一个全职PHP程序员的职位很吸引人,所以我寄去了简历并获得了面试机会。在面试之 间,我和其主要的程序员们在咨询电话中聊了聊,最后他们给我出了一套测试题,其中有一道很耐人寻味。

  找出以下代码的错误之处:

  $x = new Array();

  $x[sales] = 60;

  $x[profit] = 20:

  foreach($x as $key = $value) {

  echo $key+" "+$value+"

  ";

  }

  }

  你能找到几个呢?

  如果你发现函数参数列表中少了逗号、“new Array()”是不正确的、行末用了冒号而不是分号、foreach中没有用“=>”及用“+”来连接字符串,那恭喜你,你找到了所有的错误,你已经掌握了PHP编程的基础。

  现在我来说说我是怎么回答这道题的。我当然也找出了以上这些问题,但我更进一步。比如,你有没有发现在数组索引里没有用引号将字符串括起来?虽然这不 会造成严重错误,但这是一个编码错误。另外,你注意到在echo一行它使用了双引号而不是单引号吗?使用了PHP开始标志的缩写形式?并且没有用 “

  ”而是用了“

  ”?

  在找出了实际错误后,我又在上面找到的问题后面加了注释。这足够让这份答卷从“正确”转变为“发人深省”了,这也给我的申请加了不少分,所以他们决定 聘用我。(但最后我拒绝了,因为我喜欢紧凑的生活节奏,并将自己的PHP 技能奉献给我的客户,而不是一家涉猎电信市场的公司。我需要一个舞台来大展身手。)

  那么接下来就来看看我写的10条PHP编程习惯吧:

  1、使用单引号括起来的字符串

  当使用双引号来括字符串时,PHP解释器会对其进行变量替换、转义等操作,如“ ”。如果你只想输出一个基本的字符串,就用单引号吧,这样会节省一些资源。当然,如果你需要进行变量替换的,那就必须用双引号了,但其他情况下还是用单引号吧。

  2、字符串的输出

  你认为以下哪一条语句的运行速度最快?

  print "Hi my name is $a. I am $b";

  echo "Hi my name is $a. I am $b";

  echo "Hi my name is ".$a.". I am ".$b;

  echo "Hi my name is ",$a,". I am ",$b;

  echo 'Hi my name is ',$a,'. I am ',$b;

  也许这看起来很奇怪,但事实上最后一条的运行速度是最快的。print比echo要慢,在字符串中进行变量替换时会慢,而连接字符串要比用逗号连接来 得慢,最后一句则是第一个习惯的体现。所以,不在字符串中进行变量替换不仅会加快程序运行速度,也会让你的代码在任何语法高亮显示的编辑器中显得更为易懂 (变量会被高亮显示出来)。很少人知道echo的参数可以用逗号连接,且速度会比字符串连接要来得快。最后再用上第一个习惯,那这条语句就非常好了。

  3、在数组索引中使用单引号

  正如你在上面的测试题中所看到的,我指出了$x[sales]从严格意义上来说是错误的,索引应该被括起来,即$x['sales']。这是因为 PHP 会将没有括起来的索引辨认为“裸”字符串,并把它解释为一个常量。当找不到该常量的定义时,才将其解释为一个字符串,所以这条语句才是可运行的。把索引括 起来可以省去这部分工作,如果将来正好要用这一字符串定义常量时也就不会有错误了。我甚至听说这样做要快七倍左右的时间,虽然我没有亲自测试过。更多关于 这一话题的讨论,请看PHP手册“数组”一章中的的“数组的能与不能”一节。

  4、不要使用开始标志的缩写形式

  你正在使用这样的符号吗?“

  5、尽量不要使用正则表达式

  在进行常规的字符串操作时,尽可能不要去使用正则表达式(preg和ereg系列函数)。str_replace函数要比preg_replace快得多,甚至strtr函数也要比str_replace来得快。省去这些不必要的麻烦吧,你的老板会感谢你的。

  6、不要在循环声明中使用函数

  这个问题不单单出现在PHP中,你可以在其他语言的代码中经常看到:

  差:for($i=0;$i

  好:$count=count($array);for($i=0;$i<$count;$i++){...}

  这因该很好解释,但许多人就是想少写一行代码而浪费了系统资源。如果在循环声明中使用了count函数,那每次循环都会调用一次。如果你的循环次数很多,那就会浪费非常多的时间。

  7、永远不要使用register_globals和magic quotes

  这是两个很古老的功能,在当时(十年前)也许是一个好方法,但现在看来并非如此。老版本的PHP在安装时会默认打开这两个功能,这会引起安全漏洞、编 程错误及其他的问题,如只有用户输入了数据时才会创建变量等。如今这两个功能都被舍弃了,所以每个程序员都应该避免使用。如果你过去的程序有使用这两项功 能,那就尽快将其剔除吧。

  8、一定要对变量进行初始化(这里的“初始化”指的是“声明”——译者注)

  当需要没有初始化的变量,PHP解释器会自动创建一个变量,但依靠这个特性来编程并不是一个好主意。这会造成程序的粗糙,或者使代码变得另人迷惑,因 为你需要探寻这个变量是从哪里开始被创建的。另外,对一个没有初始化的变量进行递增操作要比初始化过的来得慢。所以对变量进行初始化会是个不错的主意。

  9、对代码进行注释

  这个问题已经提过很多次了,但再多次也不够。我知道有些地方是不聘用不对代码进行注释的程序员的。我在前一次工作面试后和副总、面试官一起浏览我写的代码,当他们对我所做的代码注释印象深刻,还了解了一下我的这一习惯。一天之后,我得到了这个工作。

  我知道有些自称为PHP大师的人声称自己的代码写得很好,不需要添加什么注释。在我看来,这些人都是垃圾。学一写注释的规范和技巧,熟悉一下phpDocumentor或Doxygen之类的注释辅助软件,都是值得的。

  10、遵循一个编程规范

  关于这一点,是你需要在面试中询问你潜在的老板的,问问他们正在使用什么编程规范。PEAR?Zend?内部规范?要提及你正在使用的编程规范,不管 是你自己创建的,还是目前普遍流行的一种。对于PHP这种松松垮垮的语言来说,如果没有一个好的编程规范,那么那些代码就会看起来想一堆垃圾。发臭的,令 人作呕的垃圾。一些基本的规范包括空格规范、打括号匹配、命名风格等。这对任何一个追求高质量的代码的人来说都是必须的。

  有人说:“我讨厌你的4个空格的缩进。”我要说,什么?用4个空格来缩进?这比用制表符过占用3个字符的空间。更重要的是,只要是使用比记事本高级的 编辑器,你可以自定义制表符的缩进值。所以每个程序员都可以以其最习惯的方式来看代码。可以时设置为4,也可以设置为0(如果你是个受虐狂)。反正我不在 乎,但你就是不能用空格来缩进!

  总的来说,我希望以上这些编程习惯可以对你有所帮助。如果你想在面试中留下好印象,只需要一些小细节就可以了。

php获取文件夹下所有文件名(php遍历目录)相关推荐

  1. 【Windows】Windows10系统获取文件夹下的文件名方法

    在工作过程中经常会碰到需要获得文件夹下文件名的情况,而如果手动获取的话,不仅太慢还很容易出错,这该怎么办呢?下面教大家在win10系统中快速获取文件夹下文件名的方法. 工具/原料 Windows10 ...

  2. 获取文件夹下的文件名并存入txt中

    import os path_imgs='C:/Users/13451/Desktop/pic' #图片存放的地址 for files in os.listdir(path_imgs): #listd ...

  3. C++获取文件夹下所有文件名

    查找文件需要一个结构体和几个函数.结构体为struct _finddata_t,函数为_findfirst.findnext和_findclose. struct _finddata_t 这个结构体是 ...

  4. python获取文件夹下所有文件名

    在对文件进行操作时,某些时候需要获取当前文件夹下所有文件的文件名,如获取"E:\工作表格\数据统计\网站日志\日志",这个目录下所有文件的名字 在Windows系统命令行窗口下,查 ...

  5. Linux Shell获取文件夹下的文件名

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 有时候需要获取某个文件夹下的所有文件名,可以用程序实现,但是打开IDE,编译运行太麻烦,在Linux服务器中通常不 ...

  6. windows获取文件夹下所有文件名的方法

    方法一:tree命令 TREE--显示磁盘目录结构命令 功能:显示指定驱动器上所有目录路径和这些目录下的所有文件名. 格式:TREE [盘符:][\目录] [/F] [/A] 使用说明:使用/F参数时 ...

  7. shell获取文件夹下所有文件名

    for file in $(ls /文件夹全路径); do echo "${file}"; done

  8. linux下获取文件夹下所有文件名

    find $path -name *.jpg > $train_file find /home/tom/data -name *.png > /home/tom/data/list.txt

  9. python怎么获取所有文件名_python 获取当前文件夹下所有文件名

    os 模块下有两个函数: os.walk() os.listdir() #!/usr/bin/env python # -*- coding: utf-8 -*- import os def file ...

最新文章

  1. 函数式编程filter、map、reduce
  2. 理解Session实现原理及安全运用
  3. python3 在线工具_Curl转python在线工具
  4. 从「蒸汽时代」到「高铁时代」,SUNMI DevOps 转型之路 | 原力计划
  5. qgis自定义符号库
  6. 基于STM32的STM8脱机编程器源码分享
  7. 【Markdown简单语法练习】
  8. Android Bluetooth HCI log 详解
  9. 微信小程序通过BLE低功耗蓝牙向USB HID键盘设备输出汉字(内含GBK编码转汉字)
  10. 和我一步步部署 kubernetes 集群
  11. DecisionTreeClassifier实例:Iris莺尾花分类
  12. 在Ubuntu中配置中文输入法
  13. Intel8086处理器使用NASM汇编语言实现操作系统15-段的定义section/vstart和align语法
  14. unity绑定骨骼动画 使用现成的模型和动作库
  15. 非线性控制5——扰动观测器
  16. 中国资源卫星应用中心新版数据服务平台介绍
  17. 6:旅游大数据综合实验
  18. NMOS和PMOS作为电源开关经典场景
  19. JAVA实现实心菱形和空心菱形
  20. 树莓派3B+安装wiringpi和bcm库

热门文章

  1. Mysql数据库的字段类型
  2. 单片机传输信息到服务器,单片机传数据到云服务器
  3. EOS核心特点是什么?
  4. 从蓝桥杯丢盔卸甲,来学一点javaScript
  5. 十折交叉验证pythoniris_python机器学习-交叉验证(cross-vaildation)
  6. C+实现RSA加密解密
  7. excel多组数据散点图生成
  8. Docker环境undertow线程数不足问题探究
  9. mysql定时任务 每日执行存储过程
  10. java 天数计算日期_Java 计算日期间天数与日期推算等操作