Maison >développement back-end >tutoriel php >Comment utiliser usort() en PHP
Cet article présente principalement comment utiliser usort() en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde. La fonction
effectue un tri personnalisé du tableau. La règle de tri est déterminée par $cmp_function 定义。
et la valeur de retour est vraie ou fausse.
Analysons maintenant une fonction simple :
<?php function re($a,$b){ return ($a<$b)?1:-1; }5 $x=array(1,3,2,5,9); usort($x, 're') print_r($x); ?>
Imprimer Le résultat est :
Array( [0] => 9 [1] => 5 [2] => 3 [3] => 2 [4] => 1<br>)
réalise l'ordre inverse du tableau. L'analyse est la suivante :
usort extrait les valeurs du tableau par paires et les entre dans l'ordre dans la fonction personnalisée. La fonction personnalisée renvoie 1 ou -1 selon le contenu. ; usort renvoie 1 ou -1 selon la valeur de retour, obtient que la valeur entrante 1 soit "supérieure à" ou "inférieure à" la valeur 2, puis trie les valeurs de petite à grande. C'est-à-dire : La valeur de retour est 1, indiquant que la valeur 1 est "supérieure" à la valeur 2, puis triée : valeur 2 -> valeur 1 ; la valeur de retour est -1, indiquant que la valeur 1 est "inférieur à" valeur 2, puis tri : Valeur 1->
Dans la fonction personnalisée ci-dessus, si $a9fccf9a2975db4d3de48bb3346a323fd$a ; s'il renvoie -1 en erreur, Description : $a est "inférieur à" $b, alors triez dans l'ordre $a->$b.
Faisons un tri plus compliqué : trions un tableau d'abord impair puis pair, puis trions du plus grand au plus petit.
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 );
Les étapes de mise en œuvre sont :
1》Déterminez si les deux valeurs d'entréesont toutes deux des nombres pairs, les deux sont des nombres pairs et triez de grand à petit
2 》Si tous ne sont pas des nombres pairs, alors au moins un est un nombre impair, déterminez d'abord si $str1 est un nombre pair, si c'est un nombre pair, c'est-à-dire : si ($str1%2= =0) est établi, puis renvoie 1, ce qui signifie que $str1 est "supérieur à" $str2, puis la fonction usort trie en "petit" $str2-> "grand" $str1 (nombre pair) ; 🎜>3> Si $str1 est un nombre impair, ce qui précède ne renvoie aucune valeur, puis détermine si $str2 est un nombre pair, si c'est un nombre pair, -1 est renvoyé, ce qui signifie que $str1 est " moins que" $str2, alors la fonction usort trie en "petit" $str1 (nombre impair) -> "grand" $str2 (nombre pair); 4> Si les deux valeurs sont impaires, aucune valeur ne sera renvoyée ci-dessus, et $str1 et $str2 seront triés de grand à petit Le résultat de sortie est :Recommandations associées :
Array( [0] => 87 [1] => 57 [2] => 55 [3] => 11 [4] => 56 [5] => 54 [6] => 22 [7] => 12 )
Comment utiliser la fonction PHP usort() pour implémenter un tri personnalisé_PHP tutoriel
PHP_I love U (1) Bases de PHP : utilisez la fonction usort() pour trier un fichier bidimensionnel array
Que dois-je faire si la fonction usort() en PHP est un tri non stable ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!