Zum Inhalt springen

usort()

In der Welt der Webentwicklung ist PHP eine beliebte Skriptsprache, die zur Erstellung dynamischer und interaktiver Websites verwendet wird. Eine der vielen Funktionen, die PHP bietet, ist die usort()-Funktion, die zum Sortieren von Arrays in einer bestimmten Reihenfolge mithilfe einer benutzerdefinierten Vergleichsfunktion dient. In diesem Artikel werden wir die usort()-Funktion im Detail besprechen und zeigen, wie sie zum Sortieren von Arrays mit benutzerdefinierten Sortierregeln verwendet werden kann.

Was ist die usort()-Funktion?

Die usort()-Funktion ist eine integrierte PHP-Funktion, mit der Sie Arrays basierend auf Ihren eigenen benutzerdefinierten Sortierregeln sortieren können. Im Gegensatz zu Standard-Sortierfunktionen, die nach Wert oder Schlüssel in aufsteigender/absteigender Reihenfolge sortieren, erfordert usort() eine Callback-Funktion, um die Vergleichslogik zu definieren. Sie modifiziert das ursprüngliche Array direkt an Ort und Stelle und gibt bei Erfolg true oder bei Misserfolg false zurück. Mit usort() können Sie Ihre eigenen benutzerdefinierten Sortierregeln definieren, um Arrays in jeder gewünschten Reihenfolge zu sortieren.

Hinweis: usort() ist kein stabiler Sortieralgorithmus. Wenn zwei Elemente als gleich verglichen werden, ist ihre ursprüngliche relative Reihenfolge nicht garantiert erhalten. Für Produktionscode, der eine stabile Sortierung erfordert, sollten Sie einen stabilen Sortieralgorithmus oder eine Vorab-Sortierung mit einer stabilen Funktion in Betracht ziehen. Darüber hinaus indiziert usort() numerische Array-Schlüssel sequenziell ab 0 neu.

Syntax

Die Syntax der usort()-Funktion lautet wie folgt:

Die Syntax der usort()-Funktion in PHP

php
usort($array, $callback);

Hierbei ist $array das Array, das Sie sortieren möchten, und $callback ist die Callback-Funktion, die die benutzerdefinierten Sortierregeln definiert.

Parameter und Rückgabewert

ParameterTypBeschreibung
$arrayarrayDas zu sortierende Array.
$callbackcallableEine benutzerdefinierte Vergleichsfunktion.

Rückgabewert: Gibt bei Erfolg true oder bei Misserfolg false zurück.

Anwendungsbeispiel

Schauen wir uns ein Beispiel an, um zu sehen, wie die usort()-Funktion funktioniert. Nehmen wir an, wir haben ein Array von Namen, das wir alphabetisch sortieren möchten, jedoch mit einer benutzerdefinierten Regel, dass alle Namen, die mit „J“ beginnen, zuerst kommen sollen.

So verwenden Sie die usort()-Funktion in PHP?

php
<?php

$names = ["John", "Adam", "Jack", "Jenny", "Bob"];
usort($names, function ($a, $b) {
    if (substr($a, 0, 1) === 'J' && substr($b, 0, 1) !== 'J') {
        return -1;
    } elseif (substr($a, 0, 1) !== 'J' && substr($b, 0, 1) === 'J') {
        return 1;
    } else {
        return $a <=> $b;
    }
});

print_r($names);

In diesem Beispiel definieren wir eine Callback-Funktion, die zwei Namen vergleicht und basierend auf den benutzerdefinierten Sortierregeln -1, 0 oder 1 zurückgibt. Wenn der erste Buchstabe von $a „J“ ist und der erste Buchstabe von $b nicht „J“ ist, kommt $a vor $b. Wenn der erste Buchstabe von $a nicht „J“ ist und der erste Buchstabe von $b „J“ ist, kommt $b vor $a. Wenn beide Namen mit „J“ beginnen oder beide nicht mit „J“ beginnen, verwenden wir den modernen PHP Spaceship-Operator (<=>), um die Namen alphabetisch zu vergleichen.

Nach der Ausführung dieses Codes wird das $names-Array wie folgt sortiert:

console
Array
(
    [0] => Jack
    [1] => Jenny
    [2] => John
    [3] => Adam
    [4] => Bob
)

Fazit

In diesem Artikel haben wir die usort()-Funktion in PHP besprochen und gezeigt, wie sie zum Sortieren von Arrays mit benutzerdefinierten Sortierregeln verwendet werden kann. Durch die Definition einer Callback-Funktion können Sie Arrays in jeder gewünschten Reihenfolge basierend auf Ihren eigenen Regeln sortieren. Diese Funktion kann besonders nützlich sein, wenn die integrierten Sortierfunktionen in PHP nicht ausreichen. Mit der usort()-Funktion haben Sie die vollständige Kontrolle darüber, wie Ihre Arrays sortiert werden.

Praxis

Wofür dient die usort()-Funktion in PHP?

Finden Sie das nützlich?

Dual-run-Vorschau — vergleichen Sie mit den Symfony-Routen live.