Mehrdimensionales Array in PHP sortieren

Subodh Poudel 18 Oktober 2021
  1. Verwenden Sie den Raumschiff-Operator, um das mehrdimensionale Array in PHP zu sortieren
  2. Verwenden Sie die Funktion usort() mit einer anonymen Vergleichsfunktion, um mehrdimensionale Arrays in PHP zu sortieren
  3. Verwenden Sie die Funktion usort() mit einer benutzerdefinierten Vergleichsfunktion, um mehrdimensionale Arrays in PHP zu sortieren
Mehrdimensionales Array in PHP sortieren

In diesem Artikel werden drei Methoden zum Sortieren des mehrdimensionalen Arrays nach Werten in PHP vorgestellt.

Verwenden Sie den Raumschiff-Operator, um das mehrdimensionale Array in PHP zu sortieren

Wir können den Raumschiffoperator <=> verwenden, um das mehrdimensionale Array mit Werten in PHP zu sortieren. Wir verwenden die Funktion usort() zusammen mit dem Raumschiff-Operator. Der Operator wurde in PHP 7 eingeführt. Er wird verwendet, um die beiden Werte zu vergleichen. Es ergibt einen ganzzahligen Wert 0, wenn beide Operanden gleich sind, ergibt weniger als 0, wenn der linke Operand kleiner als der rechte Operand ist, und ergibt grösser als 0, wenn der linke Operand grösser als der rechte ist Operand. Ebenso sortiert die Funktion usort() ein Array mit Werten unter Berücksichtigung der benutzerdefinierten Vergleichsfunktion. Die Syntax der Funktion ist wie folgt.

usort($array, $callback)

Dabei ist $array das zu sortierende Array. Die Option $callback ist eine anonyme Callback-Funktion, die das erste und zweite Argument des Arrays vergleicht.

Betrachten Sie beispielsweise das folgende Array als zu sortieren. Wir sortieren das Array mit dem Wert des Schlüssels age.

$info = array(
    array('name' => 'Jadon', 'age' => 21, 'country' => 'England'),
    array('name' => 'Marcus', 'age' => 23, 'country' => 'England'),
    array('name' => 'Anthony', 'age' => 24, 'country' => 'France'),
    array('name' => 'Mason', 'age' => 19, 'country' => 'England'),
    array('name' => 'Dan', 'age' => 23, 'country' => 'Wales'),
);

Schreiben Sie in das PHP-Eröffnungs-Tag die Funktion usort() mit dem Array $info und einer anonymen Funktion als die beiden Argumente. Die anonyme Funktion hat als Parameter $x und $y. Verwenden Sie innerhalb des Funktionsrumpfs den Raumschiffoperator, um das Alter von zwei Argumenten als $x['age'] <=> $y['age'] zu vergleichen und den Wert zurückzugeben. Schließen Sie als Nächstes das PHP-Eröffnungs-Tag. Verwenden Sie dann die PHP-Funktion print_r(), um das Array $info innerhalb des HTML-Tags <pre> zu drucken.

Somit wird das Array nach dem Wert age sortiert, wie im Ausgabebereich angezeigt.

Beispielcode:

<?php
usort($info, function($x, $y) {
    return $x['age'] <=> $y['age'];
});
?>

<pre><?php print_r($info);?> </pre>

Ausgabe:

Array
(
 [0] => Array
 (
 [name] => Mason
 [age] => 19
 [country] => England
 )

 [1] => Array
 (
 [name] => Jadon
 [age] => 21
 [country] => England
 )

 [2] => Array
 (
 [name] => Marcus
 [age] => 23
 [country] => England
 )

 [3] => Array
 (
 [name] => Dan
 [age] => 23
 [country] => Wales
 )

 [4] => Array
 (
 [name] => Anthony
 [age] => 24
 [country] => France
 )
)

Verwenden Sie die Funktion usort() mit einer anonymen Vergleichsfunktion, um mehrdimensionale Arrays in PHP zu sortieren

Wir können die Funktion usort() verwenden, die in der ersten Methode verwendet wird, um das mehrdimensionale Array mit Werten zusammen mit einer anonymen Callback-Funktion zu sortieren. Bei dieser Methode verwenden wir den Subtraktionsoperator anstelle des Raumschiff-Operators <=>. Wir können die Werte des Arrays subtrahieren, nach denen das Array sortiert ist. So können wir das Array sortieren. Wir werden dasselbe Array $info verwenden, um es nach dem Wert $age zu sortieren. Diese Methode kann vor PHP 7 verwendet werden, da der Raumschiff-Operator erst in PHP 7 eingeführt wurde.

Schreiben Sie zum Beispiel die Funktion usort() mit den Parametern wie oben. Geben Sie im Rumpf der anonymen Funktion die Subtraktion der beiden Argumente als $x['age'] - $y['age'] zurück. Drucken Sie das Array mit print_r() wie oben beschrieben. Wir erhalten die gleiche Ausgabe wie bei der ersten Methode.

Beispielcode:

<?php
usort($info, function($x, $y) {
    return $x['age'] - $y['age'];
});
?>
<pre><?php print_r($info);?> </pre>

Verwenden Sie die Funktion usort() mit einer benutzerdefinierten Vergleichsfunktion, um mehrdimensionale Arrays in PHP zu sortieren

Diese Methode ist der zweiten Methode sehr ähnlich. Der einzige Unterschied besteht darin, dass wir anstelle der anonymen Funktion eine benutzerdefinierte Vergleichsfunktion verwenden. Diese Methode kann vor der PHP 5.3-Version verwendet werden. Dies liegt daran, dass das Konzept der anonymen Funktion in PHP 5.3 eingeführt wurde.

Erstellen Sie beispielsweise eine benutzerdefinierte Funktion sortByAge() mit den Parametern $x und $y. In den Funktionskörper schreiben Sie die Subtraktion der Altersstufen wie oben. Außerhalb der Funktion schreiben Sie die Funktion usort() mit dem Array $info und sortByAge als Argumente. Drucken Sie zuletzt das Array.

Das folgende Beispiel zeigt dieselbe Ausgabe wie bei der ersten Methode.

Beispielcode:

<?php
function sortByAge($x, $y) {
    return $x['age'] - $y['age'];
}
usort($info, 'sortByAge');
?>
<pre><?php print_r($info);?> </pre>
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Verwandter Artikel - PHP Array