Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как реализовать сортировку
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Как реализовать сортировку

Страниц (1): [1]
 

1. alexlasto - 05 Августа, 2011 - 08:47:45 - перейти к сообщению
Как реализовать вывод файлов в обратно отсортированном виде (т.е. последние добавленные файлы выводятся в начале) по времени последнего изменения файла ( filemtime() )

Так как readdir() читает файлы по порядку ( типа astronomiya.txt , moi-zadumki.txt и т.д. ) по названию самого файла (англ. алфавит). Если позднее добавить файл v-sporte.txt , то он откроется последним. А надо чтобы был первым, так он является свежим постом.

Без сортировки код выглядит так:

PHP:
скопировать код в буфер обмена
  1. //формирует и выводит превью постов в цикле
  2. function ShowSmallPosts ($get_cat)
  3. {
  4.  
  5. $handle_cat = opendir ("content/$get_cat");
  6.  
  7.         while ($file = readdir ($handle_cat))
  8.         {      
  9.                
  10.                 if (preg_match('/[a-z0-9\-]+\.txt/', $file) == true && $file != 'home.txt')
  11.                 {      
  12.                         $tmp_file = file_get_contents("content/$get_cat/$file");
  13.    
  14.                         preg_match('/@title@(.*)@title@/', $tmp_file, $name_post);
  15.                         preg_match('/@text@(.*)@text@/', $tmp_file, $text_post);
  16.                        
  17.                         //формируем массив названий файлов без расширения .txt
  18.                         $file = substr($file, 0, -4);  
  19.                         $small_text = substr ($text_post[1], 0, 200);
  20.                        
  21.                         echo "<h2><a href='index.php?cat=$get_cat&post=$file'>$name_post[1]</a></h2>";
  22.                         echo "<div class='text'>$small_text...</div><br /><a href='index.php?cat=$get_cat&post=$file'>Прочитать</a><br /><br />";                      
  23.                 }
  24.         }
  25.        
  26. closedir($handle_cat);
  27.  
  28. }


Вот кое-что начал написал, но надо дописать до конца:


PHP:
скопировать код в буфер обмена
  1. //СОРТИРОВКА
  2. function ShowSmallPostsOnSort ($get_cat)
  3. {
  4.  
  5. $handle_cat = opendir ("content/$get_cat");
  6.  
  7.         while ($file = readdir ($handle_cat))
  8.         {      
  9.                
  10.                 if (preg_match('/[a-z0-9\-]+\.txt/', $file) == true && $file != 'home.txt')
  11.                 {      
  12.                         $tmp_mtime[$i] = filemtime("content/$get_cat/$file");
  13.                         $i++;
  14.                 }
  15.         }
  16.         rsort ($tmp_mtime);     //пересортировка
  17.         reset ($tmp_mtime);
  18.        
  19.         $i = 0;
  20.         while ($file = readdir ($handle_cat))
  21.         {
  22.                 if (preg_match('/[a-z0-9\-]+\.txt/', $file) == true && $file != 'home.txt' && filemtime("content/$get_cat/$file") == $tmp_mtime[$i])
  23.                 {      
  24.                         $tmp_file = file_get_contents("content/$get_cat/$file");
  25.    
  26.                         preg_match('/@title@(.*)@title@/', $tmp_file, $name_post);
  27.                         preg_match('/@text@(.*)@text@/', $tmp_file, $text_post);
  28.                        
  29.                         //формируем массив названий файлов без расширения .txt
  30.                         $file = substr($file, 0, -4);  
  31.                         $small_text = substr ($text_post[1], 0, 200);
  32.                        
  33.                         echo "<h2><a href='index.php?cat=$get_cat&post=$file'>$name_post[1]</a></h2>";
  34.                         echo "<div class='text'>$small_text...</div><br /><a href='index.php?cat=$get_cat&post=$file'>Прочитать</a><br /><br />";
  35.                         $i++;
  36.                 }
  37.        
  38.         }
  39.        
  40. closedir($handle_cat);
  41.  
  42. }



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

Зашел в тупик именно с переборкой файлов при чтении до совпадения с значением в массиве $tmp_mtime Не понял
2. alexlasto - 05 Августа, 2011 - 16:26:10 - перейти к сообщению
РАЗОБРАЛСЯ САМОСТОЯТЕЛЬНО!
Помощи не требуется Ха-ха
Радость

 

Powered by ExBB FM 1.0 RC1