列出目录的内容(php)

6


我有一个文件夹。我想把这个文件夹中的每个文件都放入一个数组中,然后在foreach循环中将它们全部输出。
怎样做最好呢?
谢谢!

5个回答

15

我认为这比readdir更好,即使它只适用于PHP 5。因为有示例,所以点赞。 - Donovan

1

1

另一种选择:

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”来获取文件的完整路径名


1
这适用于子文件夹中的文件和文件夹。返回文件夹列表和文件列表及其路径。


    $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']);

0

编辑:dwich的答案更好。我将保留此内容仅供参考。

readdir

<?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);
}
?>

希望这可以帮到你。
——阿尔贝托

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接