PHP获取foldername按创建日期排序

PHP获取foldername按创建日期排序,php,directory,Php,Directory,我想得到目录中的所有文件夹名,并按创建日期排序。 现在,我使用以下代码获取目录中的所有fodernames $path = 'userfiles'; $dirs = array(); // directory handle $dir = dir($path); while (false !== ($entry = $dir->read())) { if ($entry != '.' && $entry != '..') { if (is_dir($p

我想得到目录中的所有文件夹名,并按创建日期排序。 现在,我使用以下代码获取目录中的所有fodernames

$path = 'userfiles';
$dirs = array();
// directory handle
$dir = dir($path);

while (false !== ($entry = $dir->read())) {
    if ($entry != '.' && $entry != '..') {
       if (is_dir($path . '/' .$entry)) {
            $dirs[] = $entry;

       }
    }
}
它显示所有foldername,但不按创建日期显示

Userfiles
-->My Folder
-->My Folder 2

使用路径参数
Userfiles/*
glob\u ONLYDIR
标志调用
glob()
,访问子目录

然后调用
usort()
并按ASC顺序对目录进行排序。 *如果您想让它们按描述顺序排列,只需将函数参数切换到
$b,$a

$directories=glob('Userfiles/*',GLOB_ONLYDIR);
usort($directories, function($a,$b){ return filemtime($a) - filemtime($b); });
var_export($directories);
此外,如果您当前的工作目录(脚本所在的位置)位于“Userfiles”中,则您只需要以下内容:
glob('*',glob_ONLYDIR)
,并且输出将为,例如:

array ( 0 => 'My Folder', 1 => 'My Folder 2', )
如果您不在CWD中,请在调用
glob()
之前调用
chdir()
移动

p、 在PHP7.4及以上版本中,您可以使用箭头函数语法:

usort($directories, fn($a, $b) => filemtime($a) <=> filemtime($b));  // sort ASC
usort($directories,fn($a,$b)=>filemtime($a)filemtime($b));//分类ASC

我稍微修改了您的代码,下面的方法利用了数组键,无需创建对象或多维数组来包含其他数据

在这里,我们将最后修改的日期作为一个整数,并将其用作每个条目/文件夹名称的键,然后使用这些键对数组进行排序,为了清晰起见,我添加了一些注释

$path = 'absolute/path/to/folder';
$dirs = array();
$dir = dir($path);
while (false !== ($entry = $dir->read())) {
    if ($entry != '.' && $entry != '..') {
        $fullpath = $path . $entry;

        $time = @filemtime($fullpath);//This will fail on systems not using ISO-8859-1 for encoding
        if(!$time)//if NULL
            $time = filemtime(utf8_decode($fullpath));//Convert encoding to ISO-8859-1

        if ( is_dir($fullpath) )
            $dirs[$time] = $entry;//Use last modified time as key to this array
    }
}
//Then just sort by keys below
ksort($dirs);//from old to new
krsort($dirs);//from new to old

然后,您可以使用该键在文件夹名称旁边显示用户日期

此链接可能有助于您对文件夹进行排序,请尝试使用usort实现此目的。$myarray=glob(“用户文件”);usort($myarray,function($a,$b){returnfilemtime($a)-filemtime($b);});打印(myarray);我试过上面的代码,但不起作用。。