为了账号安全,请及时绑定邮箱和手机立即绑定

如何对特定目录中的目录和文件进行排序?

如何对特定目录中的目录和文件进行排序?

PHP
蓝山帝景 2021-04-30 04:40:26
我正在读取目录中的所有目录和文件,并希望按字母顺序对文件进行排序。if ($handle = opendir($dir)) {   while (false !== ($file = readdir($handle))) {      $files = array($file);      sort($files);      $clength = count($files);      for($x = 0; $x < $clength; $x++) {        echo $files[$x];        echo "<br>";      }上面的代码向我输出所有目录和文件,但不按字母顺序对它们进行排序。我做错了什么?
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

您必须使用此。


if ($handle = opendir($dir)) {



        while (false !== ($file = readdir($handle))) {

            $files[] = $file;


        }

        sort($files);

        $clength = count($files);

        for ($x = 0; $x < $clength; $x++) {

            echo $files[$x];

            echo "<br>";

        }

    }

更新

$files[] = strtolower($file); // for ignore first letter capital


查看完整回答
反对 回复 2021-05-07
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

要回答您的问题,您需要首先收集所有文件,然后立即对其进行排序。因此您的代码看起来像-


<?php


while (false !== ($file = readdir($handle))) {

      $files[] = $file;

}


sort($files);

但是,更好的选择是只使用scandir(),它会向您返回目录中的文件列表(包括文件夹),然后您可以对它们进行相应的排序。


我使用过usort(),以按字母顺序对文件进行排序,而忽略了大写或小写,同时保留了文件名的原始表示形式。


代码:


<?php 


$files = array_diff(scandir(YOUR_DIRECTORY_PATH_HERE),array(".",".."));


usort($files,function($file1,$file2){

    return strcmp(strtolower($file1),strtolower($file2));

});


print_r($files);

我已经使用array_diff()删除了.和..,并且包含在的结果中scandir().


查看完整回答
反对 回复 2021-05-07
  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信