#php
#php
Вопрос:
в папке с именем images
у меня есть такие изображения:
5ac7d5f6b23d3.jpg
имена задаются с помощью uniqid
функции php, а папка images
сортируется по имени — по возрастанию
теперь я создаю новое изображение
есть ли способ — using uniqid or any other function
— дать имя новому изображению — чтобы оно было first
— в порядке возрастания?
итак, получение имен с помощью
$array = glob('images/*.jpg');
print_r($array);
новое изображение должно быть первым в массиве
Комментарии:
1. Добавляйте имена файлов изображений с префиксом сортировки, например.
00000001_
,00000002_
и т. Д…uniqid
Функция поддерживает префиксный параметр.2. Вы можете сортировать по mtime (времени модификации) с помощью DirectoryIterator
3. @MarkusZeller — вы имеете в виду — сначала отсортируйте папку
images
по времени изменения по убыванию, а затем перейдите кglob...
4. Нет, не используйте glob вообще. Когда у вас есть все значения и упорядочены по убыванию mtime, у вас уже есть самый новый файл, который затем является первой записью. Итератор расширяет SplFileInfo, который предоставляет вам очень подробную информацию о любом файле.
5. не могли бы вы написать пример, пожалуйста — мне нужен массив файлов, отсортированных по дате по убыванию
Ответ №1:
DirectoryIterator можно использовать для сканирования всех файлов каталога и считывания mtime (времени модификации) каждого файла. Сохраняя их в массиве как ключ, мы можем отсортировать ключи по убыванию, чтобы получить самый новый файл.
Это позволит найти любые файлы, потому что здесь не используется шаблон глобуса. Вы также можете переписать с помощью GlobIterator, если требуется шаблон.
Теперь давайте просканируем каталог на наличие всех файлов и проигнорируем другие каталоги.
$mtimes = [];
foreach (new DirectoryIterator('./images') as $fileInfo) {
if($fileInfo->isDir()) continue;
$mtimes[$fileInfo->getMTime()] = $fileInfo->getFilename();
}
Сортировка массива по ключам в обратном порядке (по убыванию)
krsort($mtimes);
Возьмите первый элемент, который является самым новым файлом.
$latestFilename = reset($mtimes);
Комментарии:
1. а где массив файлов?
2.
$mtimes
содержит все файлы. Вы можете пройти через все сforeach ($mtimes as $mtime => $filename) echo "$filename last modified at $mtimen";