Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie wielowymiarowych tablic, problemik, tylko dla mocnych
ganimedes
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 1.04.2004

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


Mam sobie taką tablice...
  1. <?php
  2. (
  3.     [1] => Array
  4.         (
  5.             [0] => 1
  6.             [1] => 1
  7.             [2] => 1
  8.             [3] => 0
  9.         )
  10.  
  11.     [2] => Array
  12.         (
  13.             [0] => 4
  14.             [1] => 1
  15.             [2] => 0
  16.             [3] => 0
  17.         )
  18.  
  19.     [4] => Array
  20.         (
  21.             [0] => 1
  22.             [1] => 0
  23.             [2] => 0
  24.             [3] => 1
  25.         )
  26.  
  27.      [3] => Array
  28.         (
  29.             [0] => 1
  30.             [1] => 1
  31.             [2] => 0
  32.             [3] => 0
  33.         )
  34.  
  35. ?>


Jak posortować ją zeby wyglądała tak
  1. <?php
  2. (
  3.     [2] => Array
  4.         (
  5.             [0] => 4 // chodzi mi o tą wartość 
  6.             [1] => 1 // potem o tą 
  7.             [2] => 0 // next
  8.             [3] => 0 // itd
  9.         )
  10.  
  11.     [1] => Array
  12.         (
  13.             [0] => 1
  14.             [1] => 1
  15.             [2] => 1
  16.             [3] => 0
  17.         )
  18.  
  19.     [3] => Array
  20.         (
  21.             [0] => 1
  22.             [1] => 1
  23.             [2] => 0
  24.             [3] => 0
  25.         )
  26.    
  27.     [4] => Array
  28.         (
  29.             [0] => 1
  30.             [1] => 0
  31.             [2] => 0
  32.             [3] => 1
  33.         )
  34.  
  35. ?>

Próbowałem funkcji
  1. <?php
, nie działa, nie zachowuje kluczy (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Problem dla speców.. kto rozwiąże ten jest bardzo dobry.

Regards

Ten post edytował ganimedes 23.11.2004, 22:09:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




mam nadzieję, ze mój kod będzie wystarczająco łatwy do zrozumienia.
ps. to nie było zadanie dla "tylko dla mocnych"...

  1. <?php
  2. $aData = Array
  3. (
  4. => Array
  5. (
  6. => 1,
  7. => 1,
  8. => 1,
  9. => 0,
  10. ),
  11.  
  12. => Array
  13. (
  14. => 4,
  15. => 1,
  16. => 0,
  17. => 0,
  18. ),
  19.  
  20. => Array
  21. (
  22. => 1,
  23. => 0,
  24. => 0,
  25. => 1,
  26. ),
  27.  
  28. => Array
  29. (
  30. => 1,
  31. => 1,
  32. => 0,
  33. => 0,
  34. )
  35. );
  36.  
  37. function SortCallback( $aParam1, $aParam2 ) 
  38. {
  39. foreach( $aParam1 as $iWiersz => $mVal )
  40. {
  41. if( !isset( $aParam2[ $iWiersz ] ) or $aParam2[ $iWiersz ] < $mVal )
  42. {
  43. return 1; // odpowiedni rekord w param1 jest większy 
  44. }
  45. elseif( $aParam2[ $iWiersz ] > $mVal ) 
  46. {
  47. return -1; // odpowiedni rekord w param1 jest mniejszy
  48. }
  49. }
  50. return 0; // wszystkie rekordy w parametrach są równe
  51. }
  52.  
  53.  
  54. function SortCallbackDesc( $aParam1, $aParam2 ) 
  55. {
  56. return SortCallback( $aParam1, $aParam2 ) * -1;
  57. }
  58.  
  59.  
  60. uasort( $aData , 'SortCallbackDesc' );
  61.  
  62. echo '<pre>';
  63. print_r( $aData );
  64. ?>


// edited. Tak jak napisał w poście powyżej ganimedes, mój poprzedni kod zawierał drobiny błąd.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 18:53