如何将所有文件名放在php数组中

时间:2012-09-09 15:19:48

标签: php

如何将根目录中的每个文件名和每个子文件夹中的所有文件名放入php中的数组?

5 个答案:

答案 0 :(得分:4)

使用scandir(),您将找到子目录的递归函数以及大量其他示例,以实现您的目标。

答案 1 :(得分:2)

我一直首选DirectoryIteratorRecursiveDirectoryIterator

以下是一个例子:

function drawArray(DirectoryIterator $directory)
{
    $result=array();
    foreach($directory as $object)
    {
        if($object->isDir()&&!$object->isDot())
        {
            $result[$object->getFilename()]=drawArray(new DirectoryIterator($object->getPathname()));
        }
        else if($object->isFile())
        {
            $result[]=$object->getFilename();
        }
    }
    return $result;
}
$array=drawArray(new DirectoryIterator('/path'));
print_r($array);

答案 2 :(得分:1)

如果您真的想要浏览所有您的文件,请查看glob() [并对您的RAM表示哀悼]。

答案 3 :(得分:1)

我就是这样做的。

/**
    Recursively returns all the items in the given directory alphabetically as keys in an array, optionally in descending order.
    If a key has an array value it's a directory and its items are in the array in the same manner.
*/
function scandir_tree($directory_name, $sort_order = SCANDIR_SORT_ASCENDING, $_recursed = false)
    {
    if (!$_recursed || is_dir($directory_name))
        {
        $items = array_diff(scandir($directory_name, (int) $sort_order), ['.', '..']);
        $tree = [];
        foreach ($items as $item)
            {
            $tree[$item] = scandir_tree($directory_name . $item, $sort_order, true);
            }
        return $tree;
        }
    return $directory_name;
    }

答案 4 :(得分:1)

试试这个:

$ar=array();
$g=scandir('..');
foreach($g as $x)
{
    if(is_dir($x))$ar[$x]=scandir($x);
    else $ar[]=$x;
}
print_r($ar);