【发布时间】:2011-06-10 02:51:15
【问题描述】:
我有一个文件夹。我想将此文件夹中的每个文件放入一个数组中,然后我想在 foreach 循环中回显它们。
最好的方法是什么?
谢谢!
【问题讨论】:
我有一个文件夹。我想将此文件夹中的每个文件放入一个数组中,然后我想在 foreach 循环中回显它们。
最好的方法是什么?
谢谢!
【问题讨论】:
这也适用于子文件夹中的文件和文件夹。返回文件夹列表和文件列表及其路径。
$dir = __DIR__; //work only for this current dir
function listFolderContent($dir,$path=''){
$r = array();
$list = scandir($dir);
foreach ($list as $item) {
if($item!='.' && $item!='..'){
if(is_file($path.$item)){
$r['files'][] = $path.$item;
}elseif(is_dir($path.$item)){
$r['folders'][] = $path.$item;
$sub = listFolderContent($path.$item,$path.$item.'/');
if(isset($sub['files']) && count($sub['files'])>0)
$r['files'] = isset ($r['files'])?array_merge ($r['files'], $sub['files']):$sub['files'];
if(isset($sub['folders']) && count($sub['folders'])>0)
$r['folders'] = array_merge ($r['folders'], $sub['folders']);
}
}
}
return $r;
}
$list = listFolderContent($dir);
var_dump($list['files']);
var_dump($list['folders']);
【讨论】:
另一种选择:
define('PATH', 'files/');
$filesArray = array();
$filesArray = glob(PATH . '*', GLOB_ONLYDIR);
此方法允许您按文件类型指定/过滤。例如,
define('PATH', 'files/');
define('FILE_TYPE', '.jpg');
$filesArray = array();
$filesArray = glob(PATH . '*' . FILE_TYPE, GLOB_ONLYDIR);
您还可以通过删除参数“GLOB_ONLYDIR”来获取文件的完整路径名
【讨论】:
编辑:dwich 答案更好。我会留下这个仅供参考。
<?php
if ($handle = opendir('/path/to/dir')) {
echo "Directory handle: $handle\n";
echo "Files:\n";
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
closedir($handle);
}
?>
希望这会有所帮助。
——阿尔贝托
【讨论】:
Scandir 是您正在寻找的 http://php.net/manual/en/function.scandir.php
<?php
$dir = '/tmp';
$files1 = scandir($dir);
print_r($files1);
?>
或者使用 opendir 和 readdir 的组合 http://php.net/manual/en/function.readdir.php
【讨论】:
readdir 好,即使它只是 PHP 5。+1 因为示例。
【讨论】: