Maison >développement back-end >tutoriel php >Comment utiliser usort() en PHP

Comment utiliser usort() en PHP

墨辰丷
墨辰丷original
2018-05-15 18:03:403237parcourir


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, &#39;re&#39;)    
      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, &#39;Compare&#39; );
print_r ( $scores );

Les étapes de mise en œuvre sont :

1》Déterminez si les deux valeurs d'entrée​​sont 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn