function readFileFromDir($dir,&$a) {
if (!is_dir($dir)) {
return false;
}
//打开目录
$handle = opendir($dir);
while (($file = readdir($handle)) !== false) {
//排除掉当前目录和上一个目录
if ($file == "." || $file == "..") {
continue;
}
$file = $dir . DIRECTORY_SEPARATOR . $file;
//如果是文件就打印出来,否则递归调用
if (is_file($file)) {
//print $file . '<br />';
$a[] = $file;
//sleep(1);
//myLog($a,__LINE__);
} elseif (is_dir($file)) {
readFileFromDir($file,$a);
}
}
if (!is_dir($dir)) {
return false;
}
//打开目录
$handle = opendir($dir);
while (($file = readdir($handle)) !== false) {
//排除掉当前目录和上一个目录
if ($file == "." || $file == "..") {
continue;
}
$file = $dir . DIRECTORY_SEPARATOR . $file;
//如果是文件就打印出来,否则递归调用
if (is_file($file)) {
//print $file . '<br />';
$a[] = $file;
//sleep(1);
//myLog($a,__LINE__);
} elseif (is_dir($file)) {
readFileFromDir($file,$a);
}
}
}
注释:将每一次执行函数获取到的路径作为$a数组的值传入里面,然后递归再次调用readFileFromDir的时候,$a需要取地址符调用,不然$a不会保留上一次函数执行得到的文件路径。 即&$a传入。
由于php 5.4版本以后,在调用函数的时候,不能传入地址符,否则报错。故调用方法是 readFileFromDir($dir,$a); $dir,在调用之前可以定义,你要指定的目录。