Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] srtowanie tablicy wielowymiarowej według rekordu
Forum PHP.pl > Forum > PHP
TheRiko
Witam serdecznie,

krótko - czy da się posortować taką tablicę, według category_order? W tym przypadku chcę, aby SubKategoria2, wskoczyła w miejsce Subkategorii1.

  1. <?php
  2.  
  3. $tablica[1][category_order] = 3;
  4. $tablica[1][category_id] = 1;
  5. $tablica[1][category_name] = 'Kategoria1';
  6. $tablica[1][subcategory][2][category_order] = '2';
  7. $tablica[1][subcategory][2][subcategory_id] = '2';
  8. $tablica[1][subcategory][2][subcategory_name] = 'SubKategoria1';
  9. $tablica[1][subcategory][6][category_order] = '1';
  10. $tablica[1][subcategory][6][subcategory_id] = '6';
  11. $tablica[1][subcategory][6][subcategory_name] = 'SubKategoria2';
  12. $tablica[3][category_order] = 4;
  13. $tablica[3][category_id] = 3;
  14. $tablica[3][category_name] = 'Kategoria2';
  15.  
  16. echo '<pre>';
  17. print_r($categories);
  18. echo '</pre>';
  19. ?>
com
array sort?
TheRiko
No niestety sortuje mi wtedy tylko gałąź główną, czyli Kategorie. A jak posortować Podkategorie?
com
no to musisz napisać funkcje(pętle) żeby przeleciał po dzieciach smile.gif
TheRiko
No właśnie próbuję i mi nie wychodzi. Próbowałem też funkcji array_multisort i nic.

EDIT

Poradziłem sobie jakoś, można zamknąć, lub skasować temat. Dzięki i sorry za kłopot.
ctom
jak po pomoc to na forum ale jak rozwiązałeś problem to temat chcesz zamykać - może podzielisz się rozwiązaniem z innymi!
TheRiko
Jakoś inni nie kwapili się, aby pomóc i nikt rozwiązania nie podsunął. Ale ok. Problem polegał na tym, że trzeba było posortować tablicę przed jej wyświetleniem, a nie podczas. Czyli przykładowo, zanim wyświetlimy tablicę używając foreach, należy użyć jeszcze raz foreach w celu posortowania.

Przykład:
  1. <?
  2. //sortowanie tablicy
  3. asort($categories); //sortowanie kategorii
  4. foreach ($categories as $idCat => $category) {
  5. asort($categories[$idCat]['subcategory']); //sortowanie podkategorii
  6. }
  7.  
  8. //wyświetlenie tablicy
  9. foreach ($categories as $idCat => $category) {
  10. //...
  11. foreach ($category['subcategory'] as $idSubCat => $subcategory) {
  12. //...
  13. }
  14. }
  15.  
  16. ?>
com
Cytat(com @ 2.04.2015, 19:57:13 ) *
no to musisz napisać funkcje(pętle) żeby przeleciał po dzieciach smile.gif

A to co to jest? smile.gif
Liczyłeś na gotowca a nie na tym to polega smile.gif
TheRiko
Nie, męczyłem się z tym od kilku dni, inaczej bym nie pisał. Wcześniej sortowałem w tym drugim foreach, oraz przed foreach, ale bez foreach i dlatego mi nie wychodziło.
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.