Forum und email

usort

(PHP 4, PHP 5)

usort — Sorteer een array via de waarden met een gebruikersfunctie

Beschrijving

bool usort ( array &$array , callback $cmp_function )

uksort() zal de waarden van een array sorteren via een gebruikersgedefinieerde vergelijkingsfunctie. Wanneer je een array wil sorteren met enkele belangrijke criteria, dan moet je deze functie gebruiken.

De vergelijkingsfunctie moet een integer teruggeven die kleiner dan, gelijk aan of groter dan 0 is, wanneer het eerste argument respectievelijk kleiner dan, gelijk aan of groter wordt beschouwd dan het tweede argument.

Note: Wanneer twee waarden beschouwd worden als gelijkwaardig, is hun volgorde in de gesorteerde array ongedefinieerd. Tot PHP 4.0.6 behield de gebruikersfunctie de originele volgorde van deze elementen, maar met de introductie van het nieuwe sorteer algoritme in 4.1.0, is dit niet langer het geval en er is geen oplossing om dit te doen op efficiente wijze.

Note: Deze functie wijst nieuwe keys toe aan de elementen in array . Het zal bestaande keys, die je mogelijk al had toegewezen, verwijderen, in plaats van ze te herschikken.

Geeft TRUE terug bij succes, FALSE indien er een fout is opgetreden.

Example#1 usort() voorbeeld

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

$a = array(32561);

usort($a"cmp");

foreach (
$a as $key => $value) {
    echo 
"$key: $value\n";
}
?>

Het resultaat van dit script is als volgt:

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

Note: Het spreekt voor zich dat in dit minder kritische geval de sort() toepasselijker zou zijn.

Example#2 usort() voorbeeld met een multi-dimensionale 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";
}
?>

Bij het sorteren van een multi-dimensionale array, bevatten $a en $b referenties naar de eerste index van de array.

Het resultaat van dit script is als volgt:

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons

Example#3 usort() voorbeeld gebruikmakend van een functie van een object

<?php
class TestObj {
    var 
$name;

    function 
TestObj($name
    {
        
$this->name $name;
    }

    
/* Dit is de static vergelijkingsfunctie: */
    
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";
}
?>

Het resultaat van dit script is als volgt:

b
c
d

Zie ook uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort() en rsort().