Usort()

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

usort

(PHP 4, PHP 5, PHP 7, PHP 8)

usort — Sorterar en array efter värden med hjälp av en användardefinierad jämförelsefunktion

Beskrivning

usort(array &$array, callable $callback): true Sorterar en array på plats efter värden genom att använda en användarlevererad jämförelsefunktion för att bestämma ordningen.

Notera:

Om två medlemmar jämförs som lika behåller de sin ursprungliga ordning. Före PHP 8.0.0 var deras relativa ordning i den sorterade arrayen odefinierad.

Notera: Denna funktion tilldelar nya nycklar till elementen i arrayen. Den kommer att ta bort eventuella befintliga nycklar som kan ha tilldelats, snarare än att bara omordna nycklarna.

Parametrar

array
Den array som sorteras.
callback
Jämförelsefunktionen måste returnera ett heltal mindre än, lika med, eller större än noll om det första argumentet anses vara respektive mindre än, lika med, eller större än det andra.

callback(mixed $a, mixed $b): int Varning Att returnera icke-heltalsvärden från jämförelsefunktionen, som float, kommer att resultera i en intern typomvandling till int av callback:ens returvärde. Så värden som 0.99 och 0.1 kommer båda att omvandlas till ett heltalsvärde av 0, vilket kommer att jämföra sådana värden som lika.

Returvärden

Returnerar alltid true.

Ändringslogg

Version Beskrivning
8.2.0 Returtypen är nu true; tidigare var det bool.
8.0.0 Om callback förväntar sig att en parameter ska passeras som referens kommer denna funktion nu att ge ut ett E_WARNING.

Exempel

Exempel #1 usort()-exempel

<?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");

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

Detta exempel kommer att skriva ut:

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

Exempel #2 usort()-exempel med flerdimensionell 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");

foreach ($fruits as $key => $value) {
    echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}
?>

Detta exempel kommer att skriva ut:

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

Se även

uasort() - Sorterar en array med en användardefinierad jämförelsefunktion och bibehåller indexassociation
uksort() - Sorterar en array efter nycklar med en användardefinierad jämförelsefunktion
Sortering av Arrayer