PHP再帰取得フォルダ内のファイル

1347 ワード

従来の方法では、フォルダの下のコンテンツを読み込むときにopendir readdirを使用してwhileと組み合わせて現在のフォルダと親フォルダをループフィルタリングして操作しています.
function readFolderFiles($path)
{
    $list     = [];
    $resource = opendir($path);
    while ($file = readdir($resource))
    {
        //     
        if ($file != ".." && $file != ".")
        {
            if (is_dir($path . "/" . $file))
            {
                //    ,    
                $list[$file] = readFolderFiles($path . "/" . $file);
            }
            else
            {
                //       
                $list[] = $file;
            }
        }
    }
    closedir($resource);
    return $list ? $list : [];
}

//方法2//scandir関数を使用して、whileの代わりにフォルダの下の内容をスキャンして繰り返し読み込むことができます
function scandirFolder($path)
{
    $list     = [];
    $temp_list = scandir($path);
    foreach ($temp_list as $file)
    {
        //     
        if ($file != ".." && $file != ".")
        {
            if (is_dir($path . "/" . $file))
            {
                //    ,    
                $list[$file] = scandirFolder($path . "/" . $file);
            }
            else
            {
                //       
                $list[] = $file;
            }
        }
    }
    return $list;
}