繁体   English   中英

scandir-如何获取原始文件夹-文件顺序

[英]scandir - how to get original folders - files order

fs文件夹中的项目:

lorem  
ipsum  
sun  
moon.php  

function get_items($path){
    $arr = scandir($path);
    $arr = array_slice($arr, 2);
    foreach($arr as $el){
        if(is_dir($el)){
            echo "<div class='folder'>" . $el . "</div>\n";
        }
        else{
            echo "<div class='file'>" . $el . "</div>\n";
        }
    }
}

结果-所有项目都作为类回显- file并按以下顺序进行:

ipsum  
lorem  
moon.php  
sun 

如何将文件夹作为folder并以原始顺序保存-首先是文件夹,然后是文件?

lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum

您发布的代码可能有问题,因为scandir仅返回文件和文件夹的名称,而不返回它们的绝对路径。

以后使用is_dir ,仅传递文件/文件夹名称(相对路径)。 这样做时,根据文档

如果filename是相对文件名,则将相对于当前工作目录进行检查。


您可以通过将正确的路径传递给is_dir来修复代码

is_dir("$path/$el")

为了使此解决方案起作用, $path不得带有斜杠(因为我们确实添加了斜杠)。

此外, $path必须是目标目录的绝对路径,或者是对于脚本运行的工作目录的目标目录的路径。


最后,首先列出文件夹,然后列出文件,您可以对数组进行排序,或者更简单地说,进行两个foreach循环,如下所示:

function get_items($path){
    $arr = scandir($path);
    $arr = array_slice($arr, 2);

    sort($arr);

    // Folders first
    foreach($arr as $el){
        if(is_dir("$path/$el")){
            echo "<div class='folder'>" . $el . "</div>\n";
        }
    }

    // Then files
    foreach($arr as $el){
        if( ! is_dir("$path/$el")){
            echo "<div class='file'>" . $el . "</div>\n";
        }
    }
}

你们都准备好了。

 $path

所以

$path.$el

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM