usort
(PHP 3 >= 3.0.3, PHP 4, PHP 5)
usort --
Sortere et arrays værdier ved brug af en brugerdefineret
sammenligningsfunktion.
Beskrivelse
bool
usort ( array &array, callback cmp_function )
Denne funktion vil sortere et arrays værdier ved brug af en brugervalgt
sammenligningsfunktion. Hvis arrayet du ønsker at sortere skal sorteres
på en ikke ligegyldig måde, skal du bruge denne funktion.
Sammenligningsfunktionen skal returnere enten et tal større end, det samme
som eller større end nul, hvis den første argument skal betegnes til at
være enten lavere, det samme som, eller større end den anden argument.
Bemærk:
Hvis to værdier bliver bestemt som ens, deres rækkefølge i det
sorterede array er udefineret. Up til PHP 4.0.6 vil den brugervalgte
funktion bestemme rækkefølge efter den orginale, men med den nye
sorteringsalgoritme, som blev indført i 4.1.0, er dette ikke længere
tilfældet, da der ikke er nogen løsning til at gøre det på en
korrekt måde.
Returnerer TRUE ved succes, FALSE ved fejl.
Eksempel 1. usort() eksempel
<?php 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"; } ?>
|
Ovenstående eksempel vil udskrive: |
Bemærk:
Det vil dog, i dette ligegyldige eksempel, være bedre
at bruge funktionen sort(), som er mere passende.
Eksempel 2.
usort() eksempel ved et multi-dimensionel array.
<?php function cmp($a, $b) { return strcmp($a["fruit"], $b["fruit"]); }
$fruits[0]["fruit"] = "lemons"; $fruits[1]["fruit"] = "apples"; $fruits[2]["fruit"] = "grapes";
usort($fruits, "cmp");
while (list($key, $value) = each($fruits)) { echo "\$fruits[$key]: " . $value["fruit"] . "\n"; } ?>
|
Ved sortering af multi-dimensionelle array, vil $a og
$b indeholde reference til den første nøgle i arrayet.
Ovenstående eksempel vil udskrive: $fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons |
|
Eksempel 3.
usort() eksempel ved brug af en funktion fra et
object.
<?php class TestObj { var $name;
function TestObj($name) { $this->name = $name; }
/* Dette er en static sammenligningsfunktion: */ 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");
usort($a, array("TestObj", "cmp_obj"));
foreach ($a as $item) { echo $item->name . "\n"; } ?>
|
Ovenstående eksempel vil udskrive: |
Se også uasort(),
uksort(), sort(),
asort(),
arsort(),ksort(),
natsort() og rsort().