usortPodręcznik PHPPoprzedniNastępnyusort (PHP 3>= 3.0.3, PHP 4 >= 4.0.0)usort --
Sortuj tablicę według wartości korzystając ze zdefiniowanej przez
użytkownika funkcji porównującej
Opisvoid usort (array tablica, string funkcja_por)
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. Jeśli dwa elementy tablicy są równe, to ich
kolejność występowania w posortowanej tablicy pozostaje niezdefiniowany.
Istenieje także możliwość użycia funkcji składowej obiektu jako funkcji
porównującej. Zobacz przykład nr 3 poniżej.
Przykład 1. Przykład użycia usort()function cmp ($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array (3, 2, 5, 6, 1);
usort ($a, "cmp");
while (list ($key, $value) = each ($a)) {
echo "$key: $value\n";
}
Powyższy przykład wyświetli:
0: 6
1: 5
2: 3
3: 2
4: 1
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"]);
}
$owocs[0]["owoc"] = "cytryny";
$owocs[1]["owoc"] = "jabłka";
$owocs[2]["owoc"] = "winogrona";
usort($owocs, "cmp");
while (list ($key, $value) = each ($owocs)) {
echo "\$owocs[$key]: " . $value["owoc"] . "\n";
}
Sortując tablicę wielowymiarową, $a i $b zawierają referencję do
pierwszego indeksu tablicy.
Ten przykład wyświetli:
$fruits[0]: cytryny
$fruits[1]: jabłka
$fruits[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:
b
c
d
Ostrzeżenie
Używana do sortowania funkcja quicksort w niektórych bibliotekach C
(jak na przykład na systemach Solaris) może spowodować zawieszanie się
PHP jeśli funkcja porównująca zwraca niespójne wartości.
Patrz także uasort(),
uksort(), sort(),
asort(),
arsort(),ksort(),
natsort() i rsort().
PoprzedniSpis treściNastępnyuksortPoczątek rozdziałuFunkcje Aspell [przestarzałe]
Wyszukiwarka
Podobne podstrony:
function usortfunction usortfunction fdf next field namefunction ccvs voidfunction mysql errorfunction mcal event set endfunction mcrypt cbcFunctional Origins of Religious Concepts Ontological and Strategic Selection in Evolved Mindsfunction domnode get contentfunction mcrypt module get algo key sizefunction pdf execute imagewięcej podobnych podstron