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, 're') 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 $a<$b in der obigen benutzerdefinierten Funktion 1 korrekt zurückgibt, bedeutet dies, dass $a" größer als" $b ist, und es wird in der Reihenfolge $b->$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, 'Compare' ); 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-TutorialPHP_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!