Cześć, piszę sobie takiego prostego menadżerka i mam problem z funkcją do sortowania tablicy wielowymiarowej.
O ile bowiem działa mi na dwóch elementach, tak nie mogę jej ustawić na więcej.

na dwóch śmiga:
  1. function porównaj_punkty( $a_suma_punktów,
  2. $b_suma_punktów)
  3. // $c_suma_punktów,
  4. // $d_suma_punktów,
  5. // $e_suma_punktów,
  6. // $f_suma_punktów,
  7. // $g_suma_punktów,
  8. // $h_suma_punktów,
  9. // $i_suma_punktów,
  10. // $j_suma_punktów)
  11. {
  12. if ($a_suma_punktów[2] == $b_suma_punktów[2]) return 0;
  13. else if ($a_suma_punktów[2] < $b_suma_punktów[2]) return 1;
  14. else return -1;
  15. }


na czterech stoi thumbsdownsmileyanim.gif
  1. function porównaj_punkty( $a_suma_punktów,
  2. $b_suma_punktów,
  3. $c_suma_punktów,
  4. $d_suma_punktów)
  5. // $e_suma_punktów,
  6. // $f_suma_punktów,
  7. // $g_suma_punktów,
  8. // $h_suma_punktów,
  9. // $i_suma_punktów,
  10. // $j_suma_punktów)
  11. {
  12. if ($a_suma_punktów[2] == $b_suma_punktów[2])
  13. {
  14. return 0;
  15. }
  16. else if ($a_suma_punktów[2] < $b_suma_punktów[2])
  17. {
  18. return 1;
  19. }
  20. else
  21. {
  22. return -1;
  23. }
  24.  
  25. if ($c_suma_punktów[2] == $d_suma_punktów[2])
  26. {
  27. return 0;
  28. }
  29. else if ($c_suma_punktów[2] < $d_suma_punktów[2])
  30. {
  31. return 1;
  32. }
  33. else
  34. {
  35. return -1;
  36. }
  37. if ($a_suma_punktów[2] == $c_suma_punktów[2])
  38. {
  39. return 0;
  40. }
  41. else if ($a_suma_punktów[2] < $c_suma_punktów[2])
  42. {
  43. return 1;
  44. }
  45. else
  46. {
  47. return -1;
  48. }
  49. if ($b_suma_punktów[2] == $d_suma_punktów[2])
  50. {
  51. return 0;
  52. }
  53. else if ($b_suma_punktów[2] < $d_suma_punktów[2])
  54. {
  55. return 1;
  56. }
  57. else
  58. {
  59. return -1;
  60. }
  61. }



i wyskakuje taki brzydal, że nic nie rozumiem:
  1. Fatal error: Uncaught ArgumentCountError: Too few arguments to function porównaj_punkty(),
  2. 2 passed and exactly 4 expected in C...:379 Stack trace: #0 [internal function]: porównaj_punkty(Array, Array) #1
  3. C..(442): usort(Array, 'por\xC3\xB3wnaj_punkt...') #2 C:...(147): include('C:\\xampp\\htdocs...') #3 {main} thrown in C:\xampp\... on line 379


ok znalazłem problem - dwie ogólne nazwy zmiennych:

  1. function porównaj_punkty($x,$y)
  2. {
  3. if ($x[1] == $y[1]) return 0;
  4. else if ($x[1] < $y[1]) return 1;
  5. else return -1;
  6. }
  7.  


ale się przy tym na-modliłem!