Forum und email

usort

(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.

Note: 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.

Example#1 usort() eksempel

<?php
function cmp($a$b
{
    if (
$a == $b) {
        return 
0;
    }
    return (
$a $b) ? -1;
}

$a = array(32561);

usort($a"cmp");

while (list(
$key$value) = each($a)) {
    echo 
"$key: $value\n";
}
?>

Ovenstående eksempel vil udskrive:

0: 1
1: 2
2: 3
3: 5
4: 6

Note: Det vil dog, i dette ligegyldige eksempel, være bedre at bruge funktionen sort(), som er mere passende.

Example#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

Example#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;
    }
}

$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:

b
c
d

Se også uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort() og rsort().