Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sortowanie tablicy według klucza
Forum PHP.pl > Forum > Przedszkole
arzach

Witam mam taki kod którym

  1. $dir = 'pliki/';
  2. $files = scandir($dir);
  3. $dane = array();
  4. foreach($files AS $nazwa){
  5. if ($nazwa != '.' && $nazwa != '..'){
  6. $dane[] = array('nazwa' => $nazwa, 'data' => filemtime($nazwa));
  7. }
  8. }
  9.  
  10. array_multisort($dane, SORT_DESC, $dane);
  11.  
  12. foreach ($dane as $klucz => $wiersz) {
  13. echo $wiersz['nazwa'].' '.date('d-m-y H:i:s' ,$wiersz['data']).'<br>';
  14. }


pobierałam dane do tablicy a potem chciał bym wyświetlić pliki od najwcześniej
utworzonego do najpóźniej utworzonego. Kod który podałem sortuje ale według
nazwy plików a nie daty ich modyfikacji.

nospor
http://pl.php.net/array_multisort
i masz tam w opisie w przykladach po polsku napisane jak masz zrobic swoje sortowanie
arzach
No jest przykład
  1. // Pobierz listę kolumn
  2. foreach ($dane as $klucz => $wiersz) {
  3. $numer[$klucz] = $wiersz['numer'];
  4. $edycja[$klucz] = $wiersz['edycja'];
  5. }
  6.  
  7. // Posortuj dane według numeru malejąco i edycji rosnąco
  8. // Należy podać $dane jako ostatni parametr aby posortować według wspólnego
  9. // klucza
  10. array_multisort($numer, SORT_DESC, $edycja, SORT_ASC, $dane);
  11.  

I co mam jeszcze raz pętle robić ?

Bo jak robie tak to wywala błedy
  1. $dir = 'pliki/';
  2. $files = scandir($dir);
  3. $dane = array();
  4. foreach($files AS $nazwa => $klucz){
  5. if ($nazwa != '.' && $nazwa != '..'){
  6. $dane[] = array('nazwa' => $nazwa, 'data' => filemtime($nazwa));
  7. $nazwa[$klucz] = $nazwa['nazwa'];
  8. $data[$klucz] = $nazwa'data'];
  9. }
  10. }
  11.  
  12. array_multisort($data, SORT_DESC, $nazwa, SORT_ASC, $dane);
  13.  
  14. foreach ($dane as $klucz => $wiersz) {
  15. echo $wiersz['nazwa'].' '.date('d-m-y H:i:s' ,$wiersz['data']).'<br>';
  16. }



?
athei
Po 1.
Cytat
Bo jak robie tak to wywala błedy
- powinieneś napisać jakie błędy. Wróżkami nie jesteśmy.
Po 2. W filemtime() podajesz pełną ścieżkę a nie tylko nazwę pliku.
Po 3. Tak to powinno wyglądać:
  1. $dir = './pliki/';
  2. $files = scandir($dir);
  3. $dane = array();
  4.  
  5. foreach($files as $key => $row){
  6. if ($row != '.' && $row != '..'){
  7. $dane[] = array('nazwa' => $row, 'data' => filemtime($dir.$row));
  8. $nazwa[$key] = $row['nazwa'];
  9. $data[$key] = $row['data'];
  10. }
  11. }
  12. array_multisort($dane, SORT_ASC, $nazwa, SORT_DESC, $dane);
  13.  
  14. foreach ($dane as $wiersz) {
  15. echo $wiersz['nazwa'].' '.date('d-m-y H:i:s' ,$wiersz['data']).'<br>';
  16. }
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.