Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Nietypowe sortowanie tablicy
Forum PHP.pl > Forum > Przedszkole
parzol
Witam.

Czy jest możliwe jakieś proste posortowanie tej tablicy:

  1. <?php
  2. [06] => Array
  3. (
  4. [0] => Czerwiec
  5. [1] => Array
  6. (
  7. [0] => 21.
  8. [1] => 66&#8364;
  9. )
  10.  
  11. [2] => Array
  12. (
  13. [0] => 28.
  14. [1] => 66&#8364;
  15. )
  16.  
  17. [3] => Array
  18. (
  19. [0] => 07.
  20. [1] => 232&#8364;
  21. )
  22. )
  23. ?>


ale tak aby otrzymać:

  1. <?php
  2. [06] => Array
  3. (
  4. [0] => Czerwiec
  5. [1] => Array
  6. (
  7. [0] => 07.
  8. [1] => 232&#8364;
  9. )
  10.  
  11. [2] => Array
  12. (
  13. [0] => 21.
  14. [1] => 66&#8364;
  15. )
  16.  
  17. [3] => Array
  18. (
  19. [0] => 28.
  20. [1] => 66&#8364;
  21. )
  22. )
  23. ?>


Czyli klucz [0] z nazwą miesiąca jest zawsze [0] a sortujemy tylko dla tych wewnętrznych tablic po kluczu [0] czyli cyframi z kropką (7. , 21. , 28.).
Da się to wogóle zrobić?


Pozdrawiam i z góry dzięki za wszelką pomoc!
phpion
Ja bym sugerował zmienić nieco strukturę tablicy tworząc indeksy nie w postaci 0, 1, 2, a w takiej (w Twoim przypadku) 7, 21, 28 (dodatkowo bez 0 na początku, co również tyczy się "głównego" indeksu). Powinno być Ci łatwiej osiągnąć cel.
batman
Długo już tej funkcji nie używałem, ale z manual wyczytasz jak się jej używa: usort
parzol
usort to chyba jednak nie to. Od biedy dobre rozwiązanie phpiona. Dzięki snitch.gif
batman
usort to jest to. Wzięte na żywca z manuala (z drobną zmianą):
  1. <?php
  2. $arr = array(
  3. 0 => 'Czerwiec',
  4. => array(
  5. 0 => 21,
  6. 1 => '66€'),
  7. => array(
  8. 0 => 28,
  9. 1 => '66€'),
  10. => array(
  11. 0 => 07,
  12. 1 => '232€')
  13. );
  14.  
  15. echo '<pre>';
  16. print_r($arr);
  17. echo '</pre>';
  18.  
  19. usort($arr, 'callback');
  20.  
  21. echo '<pre>';
  22. print_r($arr);
  23. echo '</pre>';
  24.  
  25.  
  26. function callback($a, $b) {
  27.  
  28. if ((int)$a[0] == (int)$b[0]) {
  29. return 0;
  30. }
  31. return ((int)$a[0] < (int)$b[0]) ? -: 1;
  32. }
  33. ?>
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.