我们要使用的功能scandir,其功能是显示在指定路径的文件和目录,就像Dir。

>与一个更强大的glob()函数,该函数返回的文件名或目录相匹配的数组的形式指定的模式。
友情提醒,不要像小恶魔在电脑前停留太久,否则像小恶魔会像幽灵般的高血糖。

一个。遍历单层文件夹:

扫描单层文件夹的问题是两个函数的结果不同,但性能差别不大。
的scandir函数提供了两个额外的线,即和。和世界是不。
复制代码代码如下所示:
功能get_dir_scandir(){
树=数组();
foreach(scandir('。)为单){
回声单。 ;
}
}
get_dir_scandir();

功能get_dir_glob(){
树=数组();
foreach(glob('。 / *)为单){
回声单。 ;
}
}
get_dir_glob();

两。递归遍历文件树:

在递归扫描的文件夹树的问题,glob函数更好一点,这是非常准确的。
> scandir功能会莫名其妙的 /扫描两次文件,也就是说如果小恶有两个文件。
> .. / b.php .. / A.php,结果会出现在扫描报告两次,很奇怪。
复制代码代码如下所示:
/ /更新在2010.07.25 -下面的代码是无效的
$路径=;
功能get_filetree_scandir($路径){
树=数组();
foreach(scandir($路径)为单){
如果(is_dir('。。$单)){
美元树= array_merge(美元树,get_filetree(合一));
}
别的{
$树=;
}
}
返回$树;
}
print_r(get_filetree_scandir($路径));

/ /更新在2010.07.25 -下面是新的代码
路径=;
功能get_filetree_scandir($路径){
结果=数组();
数组();
如果(!is_dir($路径)| |!is_readable返回null($路径)); / /检查目录的有效性
所有文件= scandir美元($路径); / /目录所有文件和文件夹的访问
foreach(所有文件的文件名为美元美元){ / /遍历目录的文件和文件夹。
如果(in_array($文件名、数组('。',','))继续); / /忽略。和..
$这= $路径。' / '。$文件名; / /得到完整的文件路径
如果(is_dir($ FullName)){ / /是一个递归的单词列表
结果文件名} = { $ $(美元get_filetree_scandir FullName); / /递归的开始
}
{其他
如果文件被存储在数组文件中,则为
}
}
foreach(合温度达TMP){ / /存储在临时数组的数组来保存结果的内容
结果。
}
返回$结果;
}
print_r(get_filetree_scandir($路径));

>全球功能扫描通常是准确的,它会自动按照字母表顺序。这似乎是最好的解决办法。
复制代码代码如下所示:
$路径=;
功能get_filetree($路径){
树=数组();
foreach(glob($路径。' / *)为单){
如果(is_dir(合一)){
美元树= array_merge(美元树,get_filetree(合一));
}
别的{
$树$ };
}
}
返回$树;
}
print_r(get_filetree($路径));