php遍历目录输出目录及其下的所有文件示例

PHP遍历目录输出目录及其下的所有文件

1. 准备目录结构

在开始之前,需要准备一个目录结构,用于测试遍历目录的功能。假设在网站的根目录下准备一个名为 test 的目录,并在该目录下分别创建两个子目录 folder1folder2,并在这两个子目录下分别各创建一个文件。目录结构如下:

test/
|-- folder1/
|   |-- file1.txt
|-- folder2/
|   |-- file2.txt

2. 编写PHP代码

我们可以使用 opendir() 函数打开目录,然后使用 readdir() 函数遍历目录下的所有文件和子目录。代码示例如下:

<?php
$path = './test/';

function scan_dir($path) {
    $dir_handle = opendir($path);
    while ($item = readdir($dir_handle)) {
        if ($item == '.' || $item == '..') {
            continue;
        }
        $item_path = $path . '/' . $item;
        if (is_file($item_path)) {
            echo $item_path . "\n";
        } elseif (is_dir($item_path)) {
            echo $item_path . "\n";
            scan_dir($item_path);
        }
    }
    closedir($dir_handle);
}

scan_dir($path);
?>

这段代码首先打开了 ./test/ 目录,然后使用 while 循环读取该目录下的所有文件和子目录。对于读取到的每一个文件或子目录,代码判断其是否为目录,若为目录,则通过递归的方式遍历目录及其所有子目录。

执行这段代码,将会输出以下内容:

./test/folder1
./test/folder1/file1.txt
./test/folder2
./test/folder2/file2.txt

3. 遍历目录并记录每个子目录下的文件数

下面是另一个示例,我们可以遍历目录并记录每个子目录下的文件数。实现方式类似于上一个示例,只是增加了子目录下文件数的统计。

<?php
$path = './test/';

function scan_dir($path) {
    $dir_handle = opendir($path);
    $count = 0;
    while ($item = readdir($dir_handle)) {
        if ($item == '.' || $item == '..') {
            continue;
        }
        $item_path = $path . '/' . $item;
        if (is_file($item_path)) {
            $count++;
        } elseif (is_dir($item_path)) {
            $count += scan_dir($item_path);
        }
    }
    closedir($dir_handle);
    echo $path . ': ' . $count . "\n";
    return $count;
}

scan_dir($path);
?>

这段代码首先打开了 ./test/ 目录,然后使用 while 循环读取该目录下的所有文件和子目录。对于读取到的每一个文件或子目录,代码通过判断其是否为目录,来统计其下文件总数。当遍历到最底层的子目录时,函数将返回该子目录下文件数,从而让父目录的统计数加上该子目录的文件数。

执行这段代码,将会输出以下内容:

./test/: 4
./test/folder1: 1
./test/folder2: 1

以上是两个 PHP 遍历目录的示例,希望能解决你的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php遍历目录输出目录及其下的所有文件示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php数组总结篇(一)

    让我为你详细解释一下“PHP数组总结篇(一)”这篇攻略。 PHP数组总结篇(一) 什么是数组? 数组是一种用于存储多个值的数据结构。这些值可以是不同类型的数据,例如字符串、整数和布尔值等。数组用于将多个相关的值组合在一起,使其更容易访问和处理。 声明数组 在 PHP 中,我们可以使用 array() 函数来声明一个数组。可以在括号中指定数组的元素。 //声明…

    PHP 2023年5月23日
    00
  • php+正则将字符串中的字母数字和中文分割

    下面给出“php+正则将字符串中的字母数字和中文分割”的完整攻略。 准备工作 首先需要安装PHP开发环境,包括PHP的安装、web服务器的配置等。此处不再赘述,可以通过搜索引擎查询相关资料。完成环境安装后,可以在编辑器中新建一个php文件,比如命名为splitString.php,用于演示如何使用正则将字符串分割。 分割字符串 在PHP中,使用preg_sp…

    PHP 2023年5月26日
    00
  • php 根据URL下载远程图片、压缩包、pdf等文件到本地

    为实现根据URL下载远程图片、压缩包、PDF等文件到本地,需要分三个步骤完成。 步骤一:获取文件资源 这一步需要通过 PHP 提供的 CURL 扩展,发送 HTTP 请求,获取文件资源。在使用 CURL 扩展时,需要设置一些请求参数,如请求的 URL、请求方式(GET 或 POST)、请求头等。 以下是一个获取远程图片文件资源的示例: $url = ‘htt…

    PHP 2023年5月26日
    00
  • 微信小程序选择图片和放大预览图片功能

    微信小程序中选择图片和放大预览图片功能涉及以下两个API:wx.chooseImage()和wx.previewImage()。下面我会分别详细介绍它们的用法,并提供示例说明。 选择图片(wx.chooseImage()) 用途 wx.chooseImage()用于从相册或者拍照获取图片,支持一次选择多张图片。 语法 wx.chooseImage({ cou…

    PHP 2023年5月23日
    00
  • 简单分析MySQL中的primary key功能

    下面是详细讲解 “简单分析MySQL中的primary key功能”的攻略: 什么是Primary Key Primary Key(主键)是在MySQL表中标识唯一一条记录的列或列组合。通过设置Primary Key,可以确保在表中没有重复的记录,并且可以在查询数据库时快速的定位指定的记录。 如何设置Primary Key 设置Primary Key可以在创…

    PHP 2023年5月27日
    00
  • PHP中file_exists函数不支持中文名的解决方法

    来讲一下“PHP中file_exists函数不支持中文名的解决方法”的解决方案。 问题描述 在PHP中,我们可以用file_exists函数来检查指定的文件或目录是否存在。但是当路径或文件名中包含中文字符时,有时候会出现一些问题,比如: $file = ‘中文文件.txt’; if(file_exists($file)){ echo ‘文件已存在’; } e…

    PHP 2023年5月27日
    00
  • 详解用vue.js和laravel实现微信支付

    以下是详解用Vue.js和Laravel实现微信支付的完整攻略: 1. 前期准备 首先我们需要准备一些前期工作,包括: 注册微信支付账号,获取appid、商户号、支付秘钥等信息,以及生成API密钥证书; 安装Laravel框架,创建项目并安装必要扩展库; 安装Vue.js框架,创建项目并安装必要依赖库。 2. 后端实现 在Laravel项目中,配置微信支付的…

    PHP 2023年5月23日
    00
  • php实现分页功能的3种方法第3/3页

    PHP实现分页功能的3种方法第3/3页的完整攻略 一、分页功能的基本原理 分页功能可以理解为将一份较大的数据集合分割成若干个小的数据块,并根据用户需求一块一块地输出,从而达到减轻服务器负担和提高用户访问速度的目的。其基本原理是结合 SQL 语句中的 LIMIT 和 OFFSET 命令实现。其中,LIMIT 表示要读取多少条数据,OFFSET表示从哪条数据开始…

    PHP 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部