php 生成目录树,PHP递归遍历文件夹同时输出目录结构

递归遍历文件夹得到所有的目录及文件是很多面试题都会考的,所以总结一下。

我的目录结构如下

e7cff65f4a5d11933843f22c495300a9.png

遍历的代码如下

/**

* 遍历文件夹

* @param $dir

* @param int $level

*/

function loopDir($dir)

{

static $level = 0;

$handle = opendir($dir);

while (false !== ($file = readdir($handle))) {

if ($file != '.' && $file != '..') {

$str = "|";

for ($i = 0; $i < $level; $i++) {

$str .= "++";

}

echo "====== LEVEL " . $level . " ====== ";

echo $str . $file . "\n";

if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) {

++$level;

loopDir($dir . DIRECTORY_SEPARATOR . $file);

}

}

}

$level--;

closedir($handle);

}

输出结果

c924c52c1b7e77c08b071df3b9cc330f.png

如果你只是想得到所有的目录及文件而不是输出,可以使用下边的代码

function loopDir2($dir)

{

$fileArray = [];

$files = scandir($dir);

if (false !== $files) {

foreach ($files as $file) {

if ($file != '.' && $file != '..') {

if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) {

$fileArray[$file] = loopDir2($dir . DIRECTORY_SEPARATOR . $file);

} else {

$fileArray[] = $file;

}

}

}

}

return $fileArray;

}

最终得到的结果如下

4f64355a631966d271323da63010be39.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值