php 里面如何遍历目录,php如何遍历目录,php非递归算法遍历目录的例子

本文介绍了两种PHP遍历目录的方法。方法一是使用glob和is_dir函数进行递归遍历,方法二是利用dir类进行遍历。同时,还展示了如何使用opendir函数打开目录并读取其内容。最后,提供了一个非递归算法,通过栈来实现遍历目录下所有文件的功能。
摘要由CSDN通过智能技术生成

function myscandir($pathname){

foreach( glob($pathname) as $filename ){

if(is_dir($filename)){

myscandir($filename.'/*');

}else{

echo $filename.'

';

}

}

}

myscandir('D:/wamp/www/exe1/*');

?>

2. 方法2function myscandir($path){

$mydir=dir($path);

while($file=$mydir->read()){

$p=$path.'/'.$file;

if(($file!=".") AND ($file!="..")){

echo $p.'

';

}

if((is_dir($p)) AND ($file!=".") AND ($file!="..")){

myscandir($p);

}

}

}

myscandir(dirname(dirname(__FILE__)));

?>

二、php目录遍历函数opendir用法

opendir()函数的作用:

打开目录句柄,如果该函数成功运行,将返回一组目录流(一组目录字符串),如果失败将返回错误[error],你可以在函数的最前面加上“@”来隐藏错误.

syntax语法:opendir(directory,context) parameter

参数:description

描述:directory required. specifies the directory to stream

必要参数,指定目录对象,可选参数,指定需要处理的目录对象的context,这个context包括了一组选项,它可以对文本流的显示方式进行改变。

代码:$dir = "./";

// open a known directory, and proceed to read its contents

if (is_dir($dir))

{

if ($dh = opendir($dir)) {

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

echo "filename: $file : filetype: " . filetype($dir . $file) . "n"."

";

}

closedir($dh);

}

}

?>

三、php非递归算法遍历目录下所有文件

php不用递归实现列出目录下所有文件的代码

代码:/**

* PHP 非递归实现查询该目录下所有文件

* @param unknown $dir

* @return multitype:|multitype:string

*/

function scanfiles($dir) {

if (! is_dir ( $dir ))

return array ();

// 兼容各操作系统

$dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/';

// 栈,默认值为传入的目录

$dirs = array ( $dir );

// 放置所有文件的容器

$rt = array ();

do {

// 弹栈

$dir = array_pop ( $dirs );

// 扫描该目录

$tmp = scandir ( $dir );

foreach ( $tmp as $f ) {

// 过滤. ..

if ($f == '.' || $f == '..')

continue;

// 组合当前绝对路径

$path = $dir . $f;

// 如果是目录,压栈。

if (is_dir ( $path )) {

array_push ( $dirs, $path . '/' );

} else if (is_file ( $path )) { // 如果是文件,放入容器中

$rt [] = $path;

}

}

} while ( $dirs ); // 直到栈中没有目录

return $rt;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值