Heim > Backend-Entwicklung > PHP-Tutorial > Wie sortiere ich mehrdimensionale Arrays in PHP mithilfe einer flexiblen und wiederverwendbaren Funktion?

Wie sortiere ich mehrdimensionale Arrays in PHP mithilfe einer flexiblen und wiederverwendbaren Funktion?

Patricia Arquette
Freigeben: 2025-01-01 07:29:09
Original
452 Leute haben es durchsucht

How to Sort Multidimensional Arrays in PHP Using a Flexible and Reusable Function?

So sortieren Sie ein mehrdimensionales Array in PHP

Einführung einer verallgemeinerten Lösung für PHP 5.3

Implementierung:

function make_comparer() {
    // Normalize criteria up front
    $criteria = func_get_args();
    foreach ($criteria as $index => $criterion) {
        $criteria[$index] = is_array($criterion)
            ? array_pad($criterion, 3, null)
            : array($criterion, SORT_ASC, null);
    }

    return function($first, $second) use (&$criteria) {
        foreach ($criteria as $criterion) {
            list($column, $sortOrder, $projection) = $criterion;
            $sortOrder = $sortOrder === SORT_DESC ? -1 : 1;

            if ($projection) {
                $lhs = call_user_func($projection, $first[$column]);
                $rhs = call_user_func($projection, $second[$column]);
            } else {
                $lhs = $first[$column];
                $rhs = $second[$column];
            }

            if ($lhs < $rhs) {
                return -1 * $sortOrder;
            } elseif ($lhs > $rhs) {
                return 1 * $sortOrder;
            }
        }

        return 0; // tiebreakers exhausted
    };
}
Nach dem Login kopieren

Erweiterte Funktionen:

(1) Mehrere Sortierspalten :

usort($data, make_comparer('number', 'name'));
Nach dem Login kopieren

(2) Umgekehrt Sortieren:

usort($data, make_comparer(['name', SORT_DESC]));
Nach dem Login kopieren

(3) Benutzerdefinierte Projektionen:

usort($data, make_comparer(['birthday', SORT_ASC, 'date_create']));
Nach dem Login kopieren

(4) Kombinieren Eigenschaften:

usort($data, make_comparer(
    ['number', SORT_DESC],
    ['birthday', SORT_ASC, 'date_create']
));
Nach dem Login kopieren

Vorteile:

  • Wiederverwendbar
  • Fl exibel
  • Reversibel
  • Erweiterbar
  • Assoziativ

Das obige ist der detaillierte Inhalt vonWie sortiere ich mehrdimensionale Arrays in PHP mithilfe einer flexiblen und wiederverwendbaren Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage