遍历文件夹?

遍历文件夹?

问题描述:

我正在寻找迭代通过一个文件夹的最佳方式,并将其中的所有文件名称放入一个数组,并在另一个文件的计数。遍历文件夹?

我发现​​3210是一个很好的解决方案,但在php.net上也有很多替代方案。我不确定我应该使用哪一个,所以我在这里问。如果您想知道我想要使用它,那么请将.sql文件放在backup文件夹中,并将它们显示为<li>thesqlfile.sql</li>,并将它们全部计数。

所以我想到有两个数组,一个是他们的名字,一个是他们所有人的数目。那么在这种情况下哪种方法最适合迭代?

方法一:

<?php 
    $files = array(); 
    foreach (glob("backup/*.txt") as $filename) { 
     $files[]= $filename; 
    } 
    $count = sizeof($files); 
?> 

方法二:

function getfoldercontents($dir, $file_display = array(), $exclusions = array()) { 
if(!file_exists($dir)){ 
    return FALSE; 
} 

$dir_contents = scandir($dir); 
$contents = array(); 

foreach ($dir_contents as $file){ 
    $file_parts = explode('.', $file); 
    $file_type = strtolower(end($file_parts)); 

    if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) && !in_array($file, $exclusions)) { 
     $contents[] = $dir. '/'. $file;       
    } 
} 

return $contents; 
} 

由于glob()已经返回一个数组,你并不需要遍历其追加到数组的。你的第一种方法有点过于复杂。这完成同样的事情:

// Just assign the array output of glob() to a variable 
$files = glob("backup/*.txt"); 
$num_files = count($files); 
+1

如果**只是需要文件名,可以使用array_map('basename',$ files)'。 – salathe 2012-02-01 14:03:08

我要说的第二个可能是在文件控制方面(通过$ file_display和file_exclude $)更好,但也许你应该添加一个检查,以确保当前文件是不是一个名为something.typeyouwishtodisplay的目录