Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sortowanie tablicy według klucza
arzach
post 28.08.2009, 09:10:00
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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



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.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nospor
post 28.08.2009, 09:11:49
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl.php.net/array_multisort
i masz tam w opisie w przykladach po polsku napisane jak masz zrobic swoje sortowanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
arzach
post 29.08.2009, 14:31:27
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


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. }



?

Ten post edytował arzach 29.08.2009, 14:31:19
Go to the top of the page
+Quote Post
athei
post 29.08.2009, 17:52:51
Post #4





Grupa: Zarejestrowani
Postów: 389
Pomógł: 141
Dołączył: 11.04.2009

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


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. }
Go to the top of the page
+Quote Post

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: 19.07.2025 - 12:48