Эффективность – это не огромная сделка, но мне всегда нравится делать вещи максимально эффективными. Будет несколько каталогов, в каждой из которых будет до сотни файлов.
Я знаю, что я использую функцию scandir
чтобы получить файлы в массив, но я не уверен, куда идти оттуда. Я мог бы бросить его в цикле, чтобы проверить, заканчиваются ли файлы .markdown
, но есть ли какое-то регулярное выражение, которое я мог бы передать в сканирование?
благодаря
Вы можете использовать glob()
для получения массива имен файлов, а затем использовать usort()
и filectime()
чтобы упорядочить их по датам создания:
$files = glob('*.markdown'); usort($files, function($file_1, $file_2) { $file_1 = filectime($file_1); $file_2 = filectime($file_2); if($file_1 == $file_2) { return 0; } return $file_1 < $file_2 ? 1 : -1; });
Для версий PHP ниже 5,3:
function sortByCreationTime($file_1, $file_2) { $file_1 = filectime($file_1); $file_2 = filectime($file_2); if($file_1 == $file_2) { return 0; } return $file_1 < $file_2 ? 1 : -1; } $files = glob('*.markdown'); usort($files, 'sortByCreationTime');
Самый простой способ получить список файлов – просто сделать
$files = glob('*.markdown');
glob () в основном делает то же самое подстановочное соответствие, которое встречается в командной строке.
Сортировка по дате потребует, чтобы вы просмотрели каждый из этих файлов с помощью stat()
и извлекли его значения mtime / ctime / atime (какие fileatime (), filemtime (), filectime () возвращаются напрямую, но все равно используют stat () внутри) ,