Как проверить, какая дата самая последняя?

$files = scandir(__DIR__, SCANDIR_SORT_DESCENDING);

Сначала я попытался проверить, есть ли тип сортировки для даты, но, к сожалению, я не смог найти его, поэтому я решил использовать filemtime

$latest = date("d Y H:i:s.");
printf($latest);
foreach($files as $value) {
if ($value != "..") {
if($value != ".") {
$latestnew = date("d Y", filemtime($value));

if($latestnew > $latest) {
$latest = $value;
}
}
}
}
printf($latest);

Вы можете видеть, что у меня есть массив, в котором много файлов. Последнее имя файла должно быть в переменной $ latest. Я знаю, что проверка «>» не работает, но я не смог найти другое решение. Благодарю.

4

Решение

Так как вы начинаете с текущего времени прямо сейчас, ни один файл на самом деле не должен быть новее, чем сейчас — и вы назначаете имя файла для дальнейшего сравнения вместо фактической отметки времени, которую вы хотите проверить. Вместо того, чтобы конвертировать все в дату, сохраните фактическую метку времени. Этот способ более удобен для сравнения и хранит имя файла в отдельной переменной.

$latest = 0;
$latest_name = null;

foreach($files as $value) {
if (($value != "..") && ($value != ".")) {
$latestnew = filemtime($value);

if($latestnew > $latest) {
$latest = $latestnew;
$latest_name = $value;
}
}
}

print(date("d Y H:i:s", $latest) . ' - ' . $latest_name);

Это напечатает отформатированную метку времени последнего файла и его имя. Вы можете также хотеть префикс $value с путем к файлу, если он не находится в текущем каталоге при вызове filemtime, То есть filemtime($path . '/' . $value);

1

Другие решения

Согласно Руководство по PHP:

ИНТ filemtime (строка $ filename)

Возвращает время последнего изменения файла или FALSE при ошибке.
время возвращается как Метка времени Unix, который подходит для даты ()
функция.

Сравнение целых чисел намного проще и удобнее, чем сравнение форматов даты.

$latestFilename = '';
$latestTime = 0;
foreach($files as $filename) {
if ($filename != "..") {
if($filename != ".") {
$currentFileTime = filemtime($filename);

if($currentFileTime > $latestTime) {
$latestFilename = $filename;
$lastestTime = $currentFileTime;
}
}
}
}

Другой вариант — создать объект DateTime и использовать определенный метод сравнения.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector