Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie listy plików, według daty ostatniej modyfikacji
nexis
post 25.04.2006, 20:54:43
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Witam,

mam kod, który sprawdza zawartość katalogu news w poszukiwaniu plików tekstowych o rozszerzeniu *.txt. Korzystam z funkcji scandir" title="Zobacz w manualu php" target="_manual do pobrania listy plików do tablicy, a następnie wyłapuje pliki *.txt sprawdzając ostatnie 3 znaki pliku. W wyniku tego otrzymuję listę plików w alfabetycznym porządku i wyświetlam ich nazwę oraz treść. Jak jednak posortować te pliki (czyli dane z tabeli) według daty ostatniej modyfikacji pliku?

Zdaje się, że przyda się do tego funkcja usort" title="Zobacz w manualu php" target="_manual, ale nie wiem jak z niej skorzystać. Proszę o pomoc.

  1. <?php
  2. if (PHP_VERSION >= '5') {
  3. $dir  = 'news/';
  4. $files  = scandir($dir);
  5. echo '<table border="1"><tr>';
  6. foreach ($files as $file) {
  7. $type = substr($file, -3, 3);
  8. if ($type == 'txt') {
  9. echo '<td><b>'.$file.'</b><br /><br />'.file_get_contents($dir.$file).'</td>';
  10. }
  11. }
  12. echo '</tr></table>';
  13. } else {
  14. echo 'Obecna wersja silnika php: '.PHP_VERSION.' jest zbyt niska dla wykonania tego kodu!';
  15. }
  16. ?>


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nexis
post 25.04.2006, 21:32:25
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Cytat(Master Miko @ 2006-04-25 21:16:19)
No wiesz że możesz do tego użyć funkcji date

Jak się nie znasz to nie udzielaj takich odpowiedzi. Odpowiednim sposobem jest użycie funkcji filemtime" title="Zobacz w manualu php" target="_manual, która od razu zwraca czas UNIX i nie ma potrzeby żadnego konwertowania. Wpadłem już na pomysł utworzenia z tej tablicy:

Kod
Array ( [0] => pierwszy.txt [1] => drugi.txt )


Tablicę zawierającą datę ostatniej modyfikacji, żeby miała taką postać:

Kod
Array ( [pierwszy.txt] => 1145995864 [drugi.txt] => 1145995852 )


Za pomocą takiego kodu:

  1. <?php
  2. $new = array();
  3. foreach ($files as $file) {
  4. $time = filemtime($dir.$file);
  5. $new[$file] = $time;
  6. }
  7. ?>


Ale jak to teraz odpowiednio posortować według daty?

Zdaje się, że funkcja array_multisort" title="Zobacz w manualu php" target="_manual może tutaj pomóc, ale jeszcze się bawię jak ją prawidłowo użyć. Jeżeli ktoś wie to proszę o wskazówki.

ROZWIĄZANIE

Działa funkcja:

  1. <?php
  2. array_multisort ($new, SORT_NUMERIC, SORT_DESC);
  3. ?>


Temat można zamknąć.

Ten post edytował nexis 25.04.2006, 21:38:55


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 02:30