列出目录的内容(php)

时间:2011-01-16 20:23:22

标签: php arrays directory


我有一个文件夹。我想把这个文件夹中的每个文件放到一个数组中,然后我想在foreach循环中回显它们 最好的方法是什么?
谢谢!

5 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:1)

没有比这更容易

http://ca3.php.net/manual/en/function.scandir.php

不要忘记在linux上过滤掉隐藏目录和父目录(它们以点开头)。

答案 2 :(得分: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'来获取文件的FULL路径名

答案 3 :(得分: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']);

答案 4 :(得分: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);
}
?>

希望这有帮助。
-Alberto