Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]tworzenie tablicy, wczytywanie wartości z plików
Forum PHP.pl > Forum > Przedszkole
bleze
W jednym katalogu przechowuje pliki tekstowe o rozszerzeniu *.txt.
W każdym z tych plików znajduje się jakaś wartość (np. "511", w innym "2001", jeszcze w innym "23").
I chcę zrobić tak żeby za pomocą sortowania tablicy według kolejności od wartości największej do najmniejszej otrzymać nazwy 5 pierwszych plików w których znajdują się największe wartości.

Na przykładzie:
plik.txt - "23"
plik1.txt - "230"
plikb2.txt - "213"
pldsik3.txt - "123"
plikadc4.txt - "3"
plik5.txt - "1000"

Otrzymam: plik5.txt, plik1.txt, plikb2.txt, pldsik3.txt, plik.txt
(nie koniecznie musi być z rozszerzeniem .txt w nazwach)

Jak coś takiego zrobić?
wookieb
1) Tworzysz tablice
$tab[]=array('nazwa_pliku'=>'nazwa', 'wartosc'=>'wartosc');
$tab[]=array('nazwa_pliku'=>'nazwa', 'wartosc'=>'wartosc');
itd...
2) używasz http://php.net/array_multisort
Na tym forum tez bylo o array_multisort wiec nie pytaj jak uzywac
3) Potem array_slice albo nawet petla FOR ograniczysz ilosc pokazywany wynikow. Co chcesz.
bleze
zapomniałem dodać jeszcze że plików w tym katalogu jest około 800 i ta liczba stale rośnie, więc to raczej odpada:
Cytat
1) Tworzysz tablice
$tab[]=array('nazwa_pliku'=>'nazwa', 'wartosc'=>'wartosc');
$tab[]=array('nazwa_pliku'=>'nazwa', 'wartosc'=>'wartosc');
itd...
wookieb
To lepiej trzymac te wyniki w bazie danych.
kefirek
Można to zrobic w ten desen
  1. <?php
  2. $obecny_kat = 'test/';
  3. $kat = opendir($obecny_kat);
  4. $baza = array();
  5. while ($plik = readdir($kat))
  6. {
  7. $wartosc = file_get_contents('test/'.$plik);  
  8. $baza[] = array('nazwa'=>$plik, 'wartosc'=>$wartosc);
  9. }
  10. closedir($kat);
  11.  
  12. foreach($baza AS $nazwa){
  13. echo $nazwa['nazwa'].' '.$nazwa['wartosc'].'<br>';
  14. }
  15. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.