Podręcznik PHP Poprzedni Następny usort Opis Funkcja ta posortuje tablicę według jej wartości korzystając z podanej przez użytkownika funkcji porównującej. Jeśli chcesz posortować tablicę według skomplikowanych kryteriów, to powinieneś użyć tej funkcji. Funkcja porównująca musi zwracać liczbę całkowitą mniejszą, równą lub większą od zera jeśli pierwszy argument jest odpowiednio mniejszy, równy lub większy niż drugi. Notatka: Jeśli wynikiem porównania dwóch elementów tablicy jest równość, ich kolejność w posortowanej tablicy pozostaje niezdefiniowana. Od PHP 4.0.6 funkcje zdefiniowane przez użytkownika mogły utrzymywać początkową kolejność tych elementów, lecz nowy algorytm sortowania wprowadzony w PHP 4.1.0 czyni to uniemożliwym i nie ma wydajnego sposobu na rozwiązanie tego problemu. Przykład 1. Przykład użycia usort() Powyższy przykład wyświetli: Notatka: Oczywiście w prostszych przypadkach lepiej jest skorzystać z funkcji rsort(). Przykład 2. Przykład użycia usort() do sortowania wielowymiarowych tablic function cmp ($a, $b) {return strcmp($a["owoc"], $b["owoc"]);} $owoce[0]["owoc"] = "cytryny"; $owoce[1]["owoc"] = "jabłka"; $owoce[2]["owoc"] = "winogrona"; usort($owoce, "cmp"); while (list ($key, $value) = each ($owoce)) {echo "\$owoce[$key]: ". $value["owoc"]. "\n";} Sortując tablicę wielowymiarową, $a i $b zawierają referencję do pierwszego indeksu tablicy. Ten przykład wyświetli: $owoce[ 0]: cytryny $owoce[1]: jabłka $owoce[2]: winogrona Przykład 3. Przykład użycia usort() używając funkcji składowej obiektu class TestObj {var $name; function TestObj($name) {$this - name = $name;} / * Statyczna funkcja porównująca * / function cmp_obj($a, $b) {$al = strtolower($a - name); $bl = strtolower($b - name); if ($al == $bl) return 0; return ($al $bl)? +1: -1;}} $a[] = new TestObj("c"); $a[] = new TestObj("b"); $a[] = new TestObj("d"); uasort($a, array ("TestObj", "cmp_obj")); foreach ($a as $item) {print $item - name ."\n";} Ten przykład wyświetli: Patrz także: uasort(), uksort(), sort(), asort(), arsort(), ksort(), natsort() i rsort(). Poprzedni Spis treści Następny Początek rozdziału Aspell [przestarzałe]