Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]funcja sortująca
Forum PHP.pl > Forum > Przedszkole
piekloniebo
Witam,
Przepisałem z książki funkcję sortującą ale nie mogę jednej rzeczy przykumać.
Może głupie pytanie ale skąd PHP wie który element w poniższej tablicy to $x a który $y.

  1.  
  2. function mysort1 ( $x, $y) {
  3. return ($x['indeks1'] > $y['indeks1']);
  4. }
  5.  
  6. $a = array (
  7. array ('indeks1' => 940, 'indeks2' => 'bla'),
  8. array ('indeks1' => 333, 'indeks2' => 'tla'),
  9. array ('indeks1' => 933, 'indeks2' => 'aaa'),
  10. array ('indeks1' => 340, 'indeks2' => '123')
  11. );
  12.  
  13. //Nieposortowana
  14. echo 'tablica nieposortowana';
  15.  
  16.  
  17. //posortowana w/g indeksu1
  18. usort($a, 'mysort1');
  19.  
  20. echo 'tablica posortowana';
  21.  
  22.  
  23.  



rozumiem że on przeprowadza iterację na tych elementach i porównuje po kolei
1 do 2
2 do 3
itd każdy do każdego

ale jakoś nie mogę złapać co oznacza $x w tym zapisie:
$x['indeks1']

?


OK jak pisałem to już trochę załapałem. He he. To medźik of rajting. W przypadku tablicy dwuwymiarowej on sobie podstawia pod te iksy i y numerki tych tablic znajdujących się wewnątrz. I w ten sposób porównuje te elementy. No to chyba sam sobie już odpowiedziałem... Nie mam chyba za dobrego w głowie zaplecza matematycznego do takich funkcji...
thek
To co zdefiniowałeś to tylko funkcja pomocnicza dla funkcji usort smile.gif Zresztą i tak nie do końca poprawna. Usort wymaga funkcji, która zwraca 0, liczbę dodatnią lub ujemną. Przykład Twojej funkcji ma tylko wariant 1 (true) i 0 (false). Czyli w przypadku gdy elementy są równe lub jeden jest mniejszy zwróci false dla obu wariantów, co nie zawsze może być oczekiwanym zachowaniem. Zaś mechanizm zastosowany przez Ciebie wymaga informacji by podać po czym następuje sortowanie. Tak więc określasz, że nastąpi ono po tablicy podanej jako parametr i po wartości w kluczu o nazwie indeks1. Gdybyś podał tam indeks2 to by sortowało tablicę po wartości klucza indeks2. Ot cała filozofia.
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.