Heim >Backend-Entwicklung >PHP-Problem >So sortieren Sie ein 2D-Array mit PHP

So sortieren Sie ein 2D-Array mit PHP

PHPz
PHPzOriginal
2023-04-20 15:05:351604Durchsuche

Das Sortieren eines zweidimensionalen Arrays ist eine sehr häufige Aufgabe in PHP. Wenn Sie große Datenmengen verarbeiten, kann das Sortieren eines Arrays die Effizienz Ihres Codes erheblich verbessern. Für ein einzelnes Array können Sie mit Funktionen wie sort() und rsort() in aufsteigender und absteigender Reihenfolge sortieren. Bei zweidimensionalen Arrays ist jedoch mehr Code erforderlich, um die Sortierung zu implementieren. In diesem Artikel wird erläutert, wie Sie mit PHP ein zweidimensionales Array sortieren, einschließlich der Sortierung nach angegebenen Spalten, der Sortierung nach mehreren Spalten und benutzerdefinierter Sortierfunktionen.

1. Nach angegebenen Spalten sortieren

Wir können die in PHP integrierte Funktion usort() verwenden, um eine Sortierung zu erreichen. Die Funktion usort() ähnelt der Funktion sort(), ermöglicht uns jedoch die Verwendung einer benutzerdefinierten Funktion zum Sortieren. Um ein 2D-Array nach einer bestimmten Spalte zu sortieren, müssen wir eine benutzerdefinierte Sortierfunktion schreiben und diese an die Funktion usort() übergeben. Hier ist ein einfaches Beispiel für die Sortierung nach der zweiten Spalte in einem zweidimensionalen Array:

<?php 

function sortBySecondColumn($a, $b) {

    return $a[1] - $b[1];

}

$people = array(

    array(&#39;Tom&#39;, 23),

    array(&#39;Jack&#39;, 31),

    array(&#39;Mary&#39;, 27),

);

usort($people, &#39;sortBySecondColumn&#39;);

print_r($people);

?>

Die Ausgabe lautet:

Array

(

    [0] => Array

        (

            [0] => Tom

            [1] => 23

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Jack

            [1] => 31

        )

)

Unsere benutzerdefinierte Funktion sortBySecondColumn() vergleicht die zweite Spalte der Arrays $a und $b und sortiert sie je nach aufsteigender oder absteigender Reihenfolge. Die Funktion usort() ordnet das Array gemäß unserer benutzerdefinierten Sortierfunktion neu.

2. Mehrspaltige Sortierung

Wenn wir nach mehreren Spalten sortieren müssen, können wir unsere benutzerdefinierte Funktion leicht ändern und weitere Bedingungen für jede Spalte hinzufügen. Um ein Array nach der ersten und zweiten Spalte zu sortieren, verwenden Sie bitte den folgenden Code:

<?php 

function sortByMultipleColumns($arr, $col1, $col2) {

    foreach ($arr as $key => $row) {

        $column1[$key] = $row[$col1];

        $column2[$key] = $row[$col2];

    }

    array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $arr);

    return $arr;

}

$people = array(

    array('Tom', 31),

    array('Tom', 25),

    array('Mary', 27),

    array('Mary', 29),

);

$people = sortByMultipleColumns($people, 0, 1);

print_r($people);

?>

Die Ausgabe lautet:

Array

(

    [0] => Array

        (

            [0] => Mary

            [1] => 29

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Tom

            [1] => 31

        )

    [3] => Array

        (

            [0] => Tom

            [1] => 25

        )

)

Im obigen Code haben wir für jede Spalte ein Array hinzugefügt und dann die Funktion array_multisort() zum Sortieren verwendet Die erste Spalte in aufsteigender Reihenfolge und die zweite Spalte in absteigender Reihenfolge. Letztendlich wird das ursprüngliche Array der sortierten Ergebnisse verwendet.

3. Benutzerdefinierte Sortierfunktion

Bei Verwendung einer benutzerdefinierten Sortierfunktion können wir für jedes Element im Array ein Sortierkriterium definieren. Die benutzerdefinierte Funktion sollte einen Wert zurückgeben, der zum Vergleichen anderer Elemente im Array verwendet wird. Dieser Rückgabewert kann positiv, negativ oder Null sein, je nachdem, wie die Elemente verglichen werden. Hier ist ein Beispiel einer einfachen Filterfunktion:

<?php 

function sortByLength($a, $b) {

    return strlen($a) - strlen($b);

}

$cities = array("Berlin", "Athens", "Madrid", "Rome", "Paris");

usort($cities, &#39;sortByLength&#39;);

print_r($cities);

?>

Die Ausgabe lautet:

Array

(

    [0] => Rome

    [1] => Paris

    [2] => Berlin

    [3] => Athens

    [4] => Madrid

)

Im obigen Beispiel haben wir eine benutzerdefinierte Funktion sortByLength() definiert, die die Länge jedes Array-Elements vergleicht und es nach Sortierung in aufsteigender Reihenfolge sortiert Ordnung und gibt positiv, negativ oder null zurück.

Fazit

In PHP sortieren wir ein zweidimensionales Array mithilfe der Funktion usort(). Um nach einer bestimmten Spalte zu sortieren, müssen wir lediglich eine benutzerdefinierte Sortierfunktion schreiben und diese an die Funktion usort() übergeben. Wir können auch nach mehreren Spalten sortieren, indem wir mehrere Bedingungen hinzufügen. Mit benutzerdefinierten Sortierfunktionen können wir weitere Sortierkriterien im Array definieren. Jeder Programmierer sollte mit diesen Techniken vertraut sein, wenn er zweidimensionale Arrays manipuliert.

Das obige ist der detaillierte Inhalt vonSo sortieren Sie ein 2D-Array mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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