Показать сообщение отдельно
  #11 (permalink)  
Старый 29.12.2016, 17:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ответ на мыло:

Решить данную задачу можно различно, имея ввиду конкретный код. Это может быть как процедурный стиль, так и объектно ориентированный, используя традиционные for, while, ... или итераторы, используя различные функции работы с файловой системой.

То что я написал, это один из примеров. В нем используется функция glob, которая находит пути удовлетворяющие шаблону. В коде показанном в качестве шаблона указывается * (любое имя), то есть если есть каталог в котором создаются папки пользователей (в коде это условно имя path), то

glob($dir.'*', GLOB_ONLYDIR)

получит имена всех каталогов в этом каталоге (GLOB_ONLYDIR - получить только каталоги, без их файлов).

А в цикле, если текущее время минус время создания папки более указанного периода (определено в переменной $check), то также функцией glob получаются все файлы уже этого каталога - path/текущий_каталог_в_итерации, и также по маске *.

В каких значениях нужно получить период для сравнения можно задать в методе format('%формат_вывода'). О том как задается формат вывода времени читайте в функции date.

Чтобы иметь представление о том, что возвращает функция date_diff, запустите этот код положив его в один корень с каталогом в котором каталоги пользователей:

echo '<pre>';
$dir = array_map(function($d) {
   $diff = date_diff(date_create('now'), date_create(date('Y-m-d H:i', filemtime($d)))); //объект содержащий информацию о разности двух дат
   $diff->name_dir = $d; //дополнительно вставлено в объект - имя каталога пользователя
   return $diff;
}, glob('path/*', GLOB_ONLYDIR)); //заменить path на реальное имя каталога
print_r($dir);
Ответить с цитированием