[php] wyświetlenie plików o największym numerze

0

Witam

mam w katalogu ok 100 plików txt o nazwach typu .. 1.txt, 33.txt, 973.txt
Gdy plików było mało to wyświetlałem cały katalog. Ale im więcej tym gorzej z wyświetleniem.

Chciałbym aby wyświetlić tylko 20 plików, które mają największą cyfrę.

Kod, który mam do wyświetlenia całego katalogu

<?php
$directory="cyfry";
$dir=opendir($directory);
$file_list="<UL>";
while($file_name=readdir($dir))
    {
    if(($file_name!=".")&&($file_name!=".."))
        {
        $file_list.="<LI>$file_name";
        }
    }
$file_list.="</UL>";
closedir($dir);
echo "
Pliki w katalogu $directory to:
$file_list";
?>

Proszę o pomoc bo nie mam pojęcia jak to wykonać a jestem laikiem w php

0

hmm ja bym to zrobił tak:
za każdym razem pozbierał do tablicy wszystkie elementy i później posortował bąbelkowo

albo zbieranie do tablicy ale sortowanie już w trakcie wpisywania do tablicy przykład:
katalog ma 5 plików (5.txt ; 100.txt ; 150.txt ; 450.txt ; 8.txt)
zbierasz po kolei odczytany plik to 5.txt ląduje on na 1 miejscu w tablicy, następny odczytany plik to 100.txt, tutaj następuje sprawdzanie czy 100 jest większe od 1 miejsca w tablicy, tym razem tak więc 100.txt ma teraz 1 miejsce a 5.txt zostaje przeniesione na drugie miejsce w tablicy. Przy plikach 150.txt ; 450.txt skrypt postępuje tak samo w rezultacie wyszła nam tablica - 450.txt ; 150.txt ; 100.txt ; 5.txt - i teraz skrypt napotyka plik 8.txt standardowo sprawdza czy nie jest przypadkiem większy od 1 miejsca w tablicy jeśli nie porównuje z drugim, trzecim, czwartym, piątym, ... n-tym miejscem w tablicy, jeśli nie napotka mniejszej liczby plik zostanie pominięty jeśli napotka to zastępuje obecny wpis w tablicy i przesuwa resztę o jedno miejsce...

generalnie przy dużej ilości plików obie metody będą osiągały mało zadowalające wyniki, można by się już pokusić i "płytką bazę" na plikach, bądź zastosować już mySQL / SQL...

przy drugim sposobie proponuję użyć explode(), oraz można z góry narzucić wielkość tablicy, przez co teoretycznie 2sposób powinien być bardziej wydajny lecz wszystko wychodzi "w praniu"...

Pozdrawiam

0

sortowanie bąbelkowe jest chyba tylko do uczenia się - nie ma praktycznego zastosowania bo jest najwolniejsze ze wszystkich
druga metoda przedstawiona przez enginera też ma nazwę - nazywa się sortowaniem przez wstawianie
natomiast w php masz wbudowaną metedę sortowania szybkiego... najłatwiej zastosować i o dziwo wbrew nazwie jest ... najszybsza!

ja za to proponuję zapisać w osobnym pliku te pliki o największym numerze i listę aktualizować tylko przy wstawianiu nowego pliku

0

hmm to może faktycznie pomyśle o bazach

1 użytkowników online, w tym zalogowanych: 0, gości: 1