usort Sortuje elementy tablicy używając zdefiniowanej przez użytkownika funkcji porównującej &reftitle.description; trueusort arrayarray callablecallback Sortuje tablicę przekazaną jako array używając funkcji porównującej przekazanej przez użytkownika do ustalenia ich kolejności. ¬e.sort-unstable; ¬e.no-key-association; &reftitle.parameters; array Tablica wejściowa. callback &sort.callback.description; &reftitle.returnvalues; &return.true.always; &reftitle.changelog; &Version; &Description; &return.type.true; &array.changelog.by-ref; &reftitle.examples; Przykład użycia <function>usort</function> $value) { echo "$key: $value\n"; } ?> ]]> &example.outputs; Można też użyć operatora "statku kosmicznego", aby uprościć porównanie jeszcze bardziej. $b; } $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); foreach ($a as $key => $value) { echo "$key: $value\n"; } ?> ]]> Oczywiście w tym prostym przykładzie lepiej jest skorzystać z funkcji sort. Przykład użycia <function>usort</function> do sortowania tablic wielowymiarowych $value) { echo "\$fruits[$key]: " . $value["fruit"] . "\n"; } ?> ]]> &example.outputs; Gdy sortowana jest tablica wielowymiarowa, $a and $b zawierają referencję do pierwszego indeksu tablicy. Przykład użycia <function>usort</function> używając metody obiektu name = $name; } /* Ta metoda statyczna będzie naszą funkcją porównującą: */ static function cmp_obj($a, $b) { return strtolower($a->name) <=> strtolower($b->name); } } $a[] = new TestObj("c"); $a[] = new TestObj("b"); $a[] = new TestObj("d"); usort($a, [TestObj::class, "cmp_obj"]); foreach ($a as $item) { echo $item->name . "\n"; } ?> ]]> &example.outputs; Przykład użycia <function>usort</function> z <link linkend="functions.anonymous">domknięciem</link> do posortowania tablicy wielowymiarowej 'z', 'key_b' => 'c'); $array[1] = array('key_a' => 'x', 'key_b' => 'b'); $array[2] = array('key_a' => 'y', 'key_b' => 'a'); function build_sorter($key) { return function ($a, $b) use ($key) { return strnatcmp($a[$key], $b[$key]); }; } usort($array, build_sorter('key_b')); foreach ($array as $item) { echo $item['key_a'] . ', ' . $item['key_b'] . "\n"; } ?> ]]> &example.outputs; Przykład użycia <function>usort</function> z operatorem "statku kosmicznego" Operator "statku kosmicznego" (spaceship operator) pozwala na proste porównanie złożonych wartości wzdłuż wielu osi. Następujący przykład posortuje elementy tablicy $people po nazwiskach, a potem po imionach, jeśli nazwisko jest takie samo. 'Adam', 'nazwisko' => 'West']; $people[1] = ['imie' => 'Alec', 'nazwisko' => 'Baldwin']; $people[2] = ['imie' => 'Adam', 'nazwisko' => 'Baldwin']; function sorter(array $a, array $b) { return [$a['nazwisko'], $a['imie']] <=> [$b['nazwisko'], $b['imie']]; } usort($people, 'sorter'); foreach ($people as $person) { print $person['nazwisko'] . ', ' . $person['imie'] . PHP_EOL; } ?> ]]> &example.outputs; &reftitle.seealso; uasort uksort &seealso.array.sorting;