если последние измененные даты для каждого файла меньше или равны сегодняшней дате, тогда echo Images

#php #datetime #foreach #last-modified #strpos

#php #дата и время #foreach #последнее изменение #strpos

Вопрос:

Это возвращает изображения из моей папки.

 $dirname = "./uploaded_files/";
$images = scandir($dirname);
$ignore = Array(".", "..");
foreach($images as $curimg){

if(!in_array($curimg, $ignore)) {
};
  

Это возвращает даты последнего изменения для каждого файла в папке.

 $result = array();
$folder = ('uploaded_files/');
$handle = opendir($folder);
foreach (glob("$folder/*") as $team){$sort[]= end(explode('/',$team));}
  

Создание массива, содержащего файлы в текущем каталоге:

 while (false !==($file = readdir($handle)))
{
if ( $file != ".." amp;amp; $file != "." )
{
$file = "uploaded_files/".$file ;
if (!is_dir($file))
$result[] = $file;
}
}
closedir($handle);
  

Это мое IF И ДЛЯ КАЖДОГО оператора (вот моя проблема)!!!

 $lastmoddate = (date("Ymd", filemtime($file)));
$todaysdate = (date("Ymd"));

foreach ($result as $file){
if ($lastmoddate <= $todaysdate){
if (strpos($file, " 12:00") !==false){
echo "$file".",".date ("h:i d/m/Y", filemtime($file))."rn"."<br/>";

}
}
}
  

что я пытаюсь сделать, так это «если имена файлов содержат 12:00 и если последние измененные даты для каждого файла меньше или равны сегодняшней дате, тогда эхо-изображения! НО это не работает.

Кто-нибудь может помочь мне выяснить, как переписать мое заявление!?

Я только начал изучать PHP, кто-нибудь может помочь!?

Спасибо

Ответ №1:

Используя функцию date(), вы преобразуете целочисленную дату в удобочитаемую дату. При этом вы больше не сможете сравнивать даты (в формате d m y, который вы используете).

Самым простым решением было бы изменить формат даты с «d m y» на «Ymd», чтобы его можно было сравнить как число.

Кроме того, вы упоминаете, что дата изменения должна быть меньше или равна, но ваш код использует >=, поэтому вам может потребоваться изменить это.

Комментарии:

1. Эй, спасибо за это! Я забыл упомянуть в приведенном выше коде, что существует СПИСОК файлов, а не только один, знаете ли вы, как это будет работать для меня, используя foreach? Это то, что я получил до сих пор, но $ lastmoddate имеет только ОДНО значение файла… кажется, я не могу получить фактическую дату последнего изменения для каждого файла.. есть идеи? foreach ($result as $file){ if ($lastmoddate > $todaysdate){ if (strpos($file, » 12:00″) !== false){ echo «$file».»,».date («h: i d/m/Y», filemtime($file)).»r n».»<br/>»; } } }

2. Предполагая, что $result — это список файлов, просто поместите filemtime() внутрь foreach. foreach($result as $file){if(date(«Ymd»,filemtime($file)) >= date(«Ymd»,time())){/* etc ..*/} Код немного сжат, но, надеюсь, вы получите представление.