Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sortowanie tablic
Forum PHP.pl > Forum > PHP
pieto
Witam jestem trochę zielony w tablicach i dlatego mam taki problem z posortowaniem tego
  1. <?php
  2.  
  3.  
  4. $strony = array(); 
  5. $i = 0; 
  6.  
  7. foreach($row_cat as $st) { 
  8. $i++; 
  9. $strony[$i]['Id'] =$row_cat['categories_id']; 
  10. $strony[$i]['Kategorie'] =tep_output_generated_category_pathDESC($idpp,$from = 'category');
  11. $strony[$i]['Tytul'] =$row_catE['categories_name']; 
  12. //$strony[$i]['Status']  =$row_cat['categories_id']; 
  13. $strony[$i]['Sortowanie'] =$row_cat['sort_order'];
  14. $strony[$i]['Edycja'] = '<a href="articles_edit.php?id='.$row_cat['categories_id'].'">&gt;&gt;</a>';
  15.  
  16. }
  17.  
  18. ?>

Wyczytałem ze moge to zrobic za pomocą funkcjio usort, ale przeczytawszy manuala nie wiem jak to zrobić, ktoś poratuje... winksmiley.jpg
DzikiLis
Ale według czego chcesz sortować? Pierwszego wymiaru tablicy?
pieto
aa, no własnie.. posortować wg $strony[$i]['Kategorie']
crash
W manualu znajdziesz sporo przykładów funkcji do sortwania tablic wielowymiarowych. Ja tam znalazlem (i używam po paru przeróbkach) funkcję do sortwania względem kilku wymiarów i w odpowiedniej kolejności nawet smile.gif
DzikiLis
Dwie sprawy:
1) Zastanów się, czy nie możesz tego posortować w zapytaniu SQL.
2) Co dokładnie jest w $strony[$i]['Kategorie']? Kolejna tablica? Nazwa funkcji , która ustawia wartość tej zmiennej nic mi nie mówi.

Szybka metoda to posortować korzystając z małej sztuczki:

  1. <?php
  2.  
  3. if (setlocale(LC_ALL, 'pl_PL.ISO_8859-2') !== false) echo 'locale ustawione';
  4.  
  5. $tabl[1]['kategoria'] = 'pierwsza';
  6. $tabl[2]['kategoria'] = 'druga';
  7. $tabl[3]['kategoria'] = 'trzecia';
  8. $tabl[4]['kategoria'] = 'czwarta';
  9. $tabl[5]['kategoria'] = 'piąta';
  10. $tabl[6]['kategoria'] = 'szósta';
  11. $tabl[7]['kategoria'] = 'siódma';
  12. $tabl[8]['kategoria'] = 'ósma';
  13. $tabl[9]['kategoria'] = 'dziewiąta';
  14.  
  15. $tabl[1]['opis'] = 'opis i1';
  16. $tabl[2]['opis'] = 'opis h2';
  17. $tabl[3]['opis'] = 'opis g3';
  18. $tabl[4]['opis'] = 'opis f4';
  19. $tabl[5]['opis'] = 'opis e5';
  20. $tabl[6]['opis'] = 'opis d6';
  21. $tabl[7]['opis'] = 'opis c7';
  22. $tabl[8]['opis'] = 'opis b8';
  23. $tabl[9]['opis'] = 'opis a9';
  24.  
  25. echo "<pre>";
  26. print_r($tabl);
  27. echo "</pre>";
  28.  
  29. asort($tabl);
  30.  
  31. echo "<pre>";
  32. print_r($tabl);
  33. echo "</pre>";
  34.  
  35. ?>


Uważaj, bo kluczowa jest tutaj kolejność deklarowania. W twoim przypadku musisz zamienić miejscami wiersz 9 i 10. Nie jest to jednak najszczęśliwsze rozwiązanie...
Pigula
hmm zawsze mozesz napisac wlasne sortowanie wedlug algorytmu np. quicksort czy insertionsort ale czy bedzie to szybsze to nie wiem winksmiley.jpg
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.