Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie usort() in PHP

So verwenden Sie usort() in PHP

墨辰丷
墨辰丷Original
2018-05-15 18:03:403168Durchsuche


In diesem Artikel wird hauptsächlich die Verwendung von usort() in PHP vorgestellt. Ich hoffe, dass er für alle hilfreich ist. Die Funktion

führt eine benutzerdefinierte Sortierung des Arrays durch. Die Sortierregel wird durch $cmp_function 定义。 bestimmt und der Rückgabewert ist wahr oder falsch.

Jetzt analysieren wir eine einfache Funktion:

<?php
function re($a,$b){
           return ($a<$b)?1:-1;
          }5 $x=array(1,3,2,5,9);
      usort($x, &#39;re&#39;)    
      print_r($x);
?>


Das Druckergebnis ist:

Array(
    [0] => 9
    [1] => 5
    [2] => 3
    [3] => 2
    [4] => 1<br>)

implementiert die umgekehrte Reihenfolge des Arrays. Die Analyse ist wie folgt:

usort extrahiert die Werte im Array paarweise und gibt sie der Reihe nach in die benutzerdefinierte Funktion ein. Die benutzerdefinierte Funktion gibt je nach Inhalt 1 oder -1 zurück ; usort gibt entsprechend dem Rückgabewert 1 oder -1 zurück, erhält den eingehenden Wert 1 als „größer als“ oder „kleiner als“ den Wert 2 und sortiert dann die Werte von klein nach groß. Das heißt: Der Rückgabewert ist 1, was angibt, dass Wert 1 „größer“ als Wert 2 ist, und dann wird sortiert: Wert 2 -> Wert 1; der Rückgabewert ist -1, was angibt, dass Wert 1 ist „kleiner als“ Wert 2 und dann Sortierung: Wert 1->

Wenn $a6aa2708c2db5df653bb80895d7d3f4c7$a sortiert ; wenn es fälschlicherweise -1 zurückgibt, Beschreibung: $a ist „kleiner als“ $b, dann sortiere in der Reihenfolge $a->$b.

Führen wir eine komplexere Sortierung durch: zuerst ungerade und dann gerade und dann von groß nach klein.

function Compare($str1, $str2) { 
    if (($str1 % 2 == 0) && ($str2 %2 == 0)) { 
        if ($str1 > $str2) 
            return - 1; 
        else 
            return 1; 
    } 
    if ($str1 % 2 == 0) 
        return 1;
    if ($str2 % 2 == 0)
        return -1;
    return ($str2 > $str1) ? 1 : - 1;
}
$scores = array (22,57,55,12,87,56,54,11);
usort ( $scores, &#39;Compare&#39; );
print_r ( $scores );

Die Implementierungsschritte sind:

1》Bestimmen Sie, ob die beiden Eingabewerte beide gerade Zahlen sind, beide sind gerade Zahlen, und sortieren Sie von groß nach klein;

2》Wenn nicht alle gerade Zahlen sind, dann ist mindestens eine eine ungerade Zahl. Bestimmen Sie zunächst, ob $str1 eine gerade Zahl ist, das heißt: if ($str1%2== 0) wird erstellt, dann wird 1 zurückgegeben, was bedeutet, dass $str1 „größer als“ $str2 ist, dann sortiert die Funktion „usort“ nach „klein“ $str2-> „groß“ $str1 (gerade Zahl); >3》Wenn $str1 eine ungerade Zahl ist, gibt das Obige keinen Wert zurück und bestimmt dann $str2 Ob es sich um eine gerade Zahl handelt. Wenn es eine gerade Zahl ist, wird -1 zurückgegeben, was bedeutet, dass $str1 „weniger“ ist als" $str2, dann sortiert die Funktion usort nach "klein" $str1 (ungerade Zahl) -> "groß" $str2 (gerade Zahl) ;

4》Wenn beide Werte ungerade sind Zahlen, oben wird kein Wert zurückgegeben, und dann werden $str1 und $str2 von groß nach klein sortiert;

Das Ausgabeergebnis ist:

Array(
    [0] => 87
    [1] => 57
    [2] => 55
    [3] => 11
    [4] => 56
    [5] => 54
    [6] => 22
    [7] => 12
)

Verwandte Empfehlungen:

So verwenden Sie die PHP-Funktion usort(), um eine benutzerdefinierte Sortierung zu implementieren_PHP-Tutorial

PHP_Ich liebe U von (1) PHP-Lebensmittel und Getränke: Verwenden Sie die Funktion usort(), um a zu sortieren zweidimensionales Array

Was soll ich tun, wenn die Funktion usort() in PHP eine instabile Sortierung ist?

Das obige ist der detaillierte Inhalt vonSo verwenden Sie usort() in 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