Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 列出文件夹中的所有json文件,然后按日期排序并分页_Php - Fatal编程技术网

Php 列出文件夹中的所有json文件,然后按日期排序并分页

Php 列出文件夹中的所有json文件,然后按日期排序并分页,php,Php,我需要帮助使它工作。 我使用这段代码列出文件夹中的所有json文件并对其进行分页,效果很好 <?php $all_files = []; $dir = new DirectoryIterator(dirname(__FILE__) . DIRECTORY_SEPARATOR . constant('POSTS_DIR')); foreach ($dir as $fileinfo) { if ($fileinfo->isFile() && in_array($fi

我需要帮助使它工作。 我使用这段代码列出文件夹中的所有json文件并对其进行分页,效果很好

<?php
$all_files = [];
$dir = new DirectoryIterator(dirname(__FILE__) . DIRECTORY_SEPARATOR . constant('POSTS_DIR'));

foreach ($dir as $fileinfo) {
  if ($fileinfo->isFile() && in_array($fileinfo->getExtension(), array('json'))) {
    array_push($all_files, realpath(constant('POSTS_DIR')) . '/' . $fileinfo->getBasename());
  }
}
?>

但是我如何实现排序方式
getMTime()
krsort()

我首先需要最后修改的文件。

将mtime值存储在单独的数组中,然后使用
usort
对它们进行排序

在循环之前,添加:

$mtimes = [];
在循环中:

    $all_files[] = $file = realpath(constant('POSTS_DIR')) . '/' . $fileinfo->getBasename());
    $mtimes[$file] = $fileinfo->getMTime();
usort($all_files, function ($a, $b) use ($mtimes) {
    return $mtimes[$b] <=> $mtimes[$a];
});
然后,在循环之后:

    $all_files[] = $file = realpath(constant('POSTS_DIR')) . '/' . $fileinfo->getBasename());
    $mtimes[$file] = $fileinfo->getMTime();
usort($all_files, function ($a, $b) use ($mtimes) {
    return $mtimes[$b] <=> $mtimes[$a];
});
usort($all_文件,函数($a,$b)使用($mtimes){
返回$mtimes[$b]$mtimes[$a];
});

这正是我所期待的。谢谢你的支持,克里斯托夫。