Heim  >  Artikel  >  Backend-Entwicklung  >  Zweidimensionale PHP-Array-Sortiermethode (array_multisort usort)

Zweidimensionale PHP-Array-Sortiermethode (array_multisort usort)

高洛峰
高洛峰Original
2016-12-22 11:14:182245Durchsuche

Zum Beispiel ein Array wie das folgende:

$users = array(
    array('name' => 'tom', 'age' => 20)
    , array('name' => 'anny', 'age' => 18)
    , array('name' => 'jack', 'age' => 22)
);

Ich hoffe, es kann nach Alter von klein nach groß sortiert werden. Der Autor hat zwei Methoden herausgefunden und sie mit allen geteilt.

1. Verwenden Sie array_multisort

Die Verwendung dieser Methode ist aufwändiger. Sie müssen das Alter extrahieren und in einem eindimensionalen Array speichern und es dann in aufsteigender Reihenfolge nach Alter anordnen. Der spezifische Code lautet wie folgt:

$ages = array();
foreach ($users as $user) {
    $ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);

Nach der Ausführung ist $users ein sortiertes Array, das zur Ansicht ausgedruckt werden kann. Wenn Sie zuerst in aufsteigender Reihenfolge nach Alter und dann in aufsteigender Reihenfolge nach Namen sortieren müssen, ist die Methode dieselbe wie oben, d 🎜>

2. Verwenden Sie usort
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

Der größte Vorteil dieser Methode besteht darin, dass Sie einige komplexere Sortiermethoden anpassen können. Sortieren Sie beispielsweise nach Namenslänge in absteigender Reihenfolge:

Hier werden anonyme Funktionen verwendet, die bei Bedarf separat extrahiert werden können. Unter diesen können $a und $b als Elemente im Array $users verstanden werden. Sie können den Namenswert direkt indizieren, die Länge berechnen und dann die Längen vergleichen.
usort($users, function($a, $b) {
            $al = strlen($a['name']);
            $bl = strlen($b['name']);
            if ($al == $bl)
                return 0;
            return ($al > $bl) ? -1 : 1;
        });

Der Autor bevorzugt die zweite Methode, da weniger Schritte zum Extrahieren des sortierten Inhalts in ein eindimensionales Array erforderlich sind und die Sortiermethode flexibler ist.

Weitere Artikel zur zweidimensionalen PHP-Array-Sortiermethode (array_multisort usort) finden Sie auf der chinesischen PHP-Website!

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