【发布时间】:2011-07-22 05:48:21
【问题描述】:
function file_list($path){
$final_result=array();
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($path."/".$file)) {
//echo $path."/".$file."\n";//directory
return file_list($path."/".$file);
} else {
//echo $path."/".$file."\n"; //all file
if(stripos($path."/".$file,"playlist.data"))
{
//echo $path."/".$file."\n"; //file contains "list.data"
$content = file_get_contents($path."/".$file);
preg_match_all("/([0-9]*).txt,0/",$content, $matches);
$result=array_unique($matches[1]);
$final_result=array_merge($final_result,$result);
$final_result=array_unique($final_result);
sort($final_result);
return($final_result);
}
}
}
}
}
}
print_r(file_list($argv[1]));
list.data 文件如下:
1.txt
3.txt
另一个像这样的 list.data 文件:
2.txt
4.txt
所以结果应该是这样的数组:
Array(
[0]=>1
[1]=>2
[2]=>3
[3]=>4
)
我的目标是递归搜索文件系统的指定目录,当我找到名为“list.data”的文件时,我读取了这个文件并使用正则表达式过滤并排列到$result。因为我有多个“list.data”,所以我想将每个$result 合并到$final_result。但是这个脚本什么也没输出。
谁能告诉我file_list 函数有问题。
我在 CLI 模式下执行这个 php 脚本,如下所示: php.exe script.php "d:/test/listdir"
【问题讨论】:
标签: php recursion array-merge