Список каталогов по дате, и он удаляет один элемент из массива … я что-то упустил?

Код:

    $files = array();
$dir = new DirectoryIterator($directory);
foreach ($dir as $fileinfo) {
$files[$fileinfo->getMTime()] = $fileinfo->getFilename();
}

//krsort will sort in reverse order
krsort($files);

foreach($files as $file){
if ($file == "." or $file == ".." or $file == "thumbs" or $file == "Thumbs.db" or strpos($file, '.') == TRUE){
}else{
if (file_exists($directory.$file.'/zconfirmed.txt')){
echo '<script>console.log("display_subdirectories.php says: '.$directory.$file.'/zconfirmed.txt");</script><li class=""><a class="w3-btn w3-green" href="' .$URL.$file. '" >' .$file. '</a></li>';
}
else{
echo '<script>console.log("display_subdirectories.php says: '.$directory.$file.'");</script><li class="bold"><a class="w3-btn w3-red" href="' .$URL.$file. '" >' .$file. '</a></li>';
}
}
}

Вот моя проблема. Если существует только 1 каталог, в котором находится файл zconfirmed.txt, он не отображается, когда я выполняю итерацию по массиву. Если есть 2 или более, это работает просто отлично. У кого-нибудь есть ответ или даже что-то, что я могу сделать, чтобы лучше устранить этот код?

Я просто пытаюсь перечислить каталоги в порядке их последнего изменения даты / времени.

Спасибо вам большое за помощь!

1

Решение

Вы уже сохраняете имя файла в массиве, не могли бы вы изменить цикл foreach на что-то более простое, например

foreach($files as $file) {
if ($file == "zconfirmed.txt") {
echo '<script>console.log("display_subdirectories.php says: '.$directory.$file.'/zconfirmed.txt");</script><li class=""><a class="w3-btn w3-green" href="' .$URL.$file. '" >' .$file. '</a></li>';
}
}
0

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

Кажется, это работает:

  echo '<div id="subdirectories"><h3>Subdirectories:</h3><ul>';

$files = scandir($directory);
$dir = array();
foreach ($files as $file){
if (checkDirectory($file) == true){
$filetime = filemtime($directory.$file);
$filename = $file;
$dir[$filetime] =  $filename;
}
}
ksort($dir);
$files = $dir;

foreach ($files as $time=>$file){
$contiansPhotos = FALSE;
$path = $directory.$file;
$dirs = glob($path.'/{zconfirmed.txt}', GLOB_BRACE);
foreach($dirs as $dir) {
$contiansPhotos = TRUE;
}
if($contiansPhotos === TRUE){
echo '<li class=""><a class="w3-btn w3-green" href="' .$URL.$file. '" >' .$file. '</a></li>';
}
}//foreach $files as $file;

foreach ($files as $time=>$file){
$contiansPhotos = FALSE;
$path = $directory.$file;
$dirs = glob($path.'/{zconfirmed.txt}', GLOB_BRACE);
foreach($dirs as $dir) {
$contiansPhotos = TRUE;
}
if($contiansPhotos === FALSE){
echo '<li class="bold"><a class="w3-btn w3-red" href="' .$URL.$file. '" >' .$file. '</a></li>';
}
}//foreach $files as $file;

echo '</ul></div>';
0

По вопросам рекламы [email protected]