Maison  >  Article  >  développement back-end  >  Explication détaillée de la fonction array_multisort du tableau PHP

Explication détaillée de la fonction array_multisort du tableau PHP

小云云
小云云original
2018-03-27 15:01:123202parcourir

La fonction array_multisort en PHP trie plusieurs tableaux ou tableaux multidimensionnels. Le tableau de paramètres est traité comme une colonne d'une table et trié par lignes - ceci est similaire à la fonction de la clause ORDER BY de SQL. Le premier tableau est le tableau principal à trier. Si les lignes (valeurs) du tableau sont comparées comme étant identiques, elles sont triées en fonction de la taille de la valeur correspondante dans le tableau d'entrée suivant, et ainsi de suite. Remarque : Le nombre d'éléments du tableau utilisés comme paramètres doit être cohérent, sinon une erreur sera signalée.

Regardons d'abord un exemple de tri de plusieurs tableaux.

  1. $array1 = array('one'=>'10','two'=>'20','three'=>'20','four'=>10);  
    $array2 = array('one'=>'10','two'=>'30','three'=>'20','four'=>'1');  
    $array3 = array('one'=>'C','two'=>'A','three'=>'B','four'=>'F');  
      
    array_multisort($array1,$array2,$array3);  
    print_r($array1);//Array ( [four] => 10 [one] => 10 [three] => 20 [two] => 20 )  
    print_r($array2);//Array ( [four] => 1 [one] => 10 [three] => 20 [two] => 30 )  
    print_r($array3);//Array ( [four] => F [one] => C [three] => B [two] => A )


Dans l'exemple ci-dessus, le premier tableau de paramètres est trié en premier (tous les tableaux sont triés par ordre croissant par défaut), on peut voir La même valeur existe dans le premier tableau (les noms de clé « un » et « quatre » ont la même valeur de clé, les noms de clé « deux » et « trois » ont la même valeur de clé), donc la même valeur dans le premier Le tableau est trié Ensuite, il est trié en fonction de la taille de la valeur correspondante dans le tableau d'entrée suivant (la valeur du deuxième tableau « quatre » est plus petite que la valeur de « un », donc la valeur de quatre est classée devant un), et ainsi de suite.

Regardons un exemple de modification de l'ordre de tri.

  1. $array1 = array('one'=>'10','two'=>'20','three'=>'20','four'=>10);  
    $array2 = array('one'=>'10','two'=>'30','three'=>'20','four'=>'1');  
    $array3 = array('one'=>'C','two'=>'A','three'=>'B','four'=>'F');  
      
    array_multisort($array1,SORT_DESC,$array2,SORT_ASC,$array3);  
    print_r($array1);//Array ( [three] => 20 [two] => 20 [four] => 10 [one] => 10 )  
    print_r($array2);//Array ( [three] => 20 [two] => 30 [four] => 1 [one] => 10 )  
    print_r($array3);//Array ( [three] => B [two] => A [four] => F [one] => C )

Dans cet exemple, le premier tableau est trié par ordre décroissant, et si la même valeur est rencontrée, le deuxième tableau est trié selon le valeur ascendante.

Remarque : Si les tableaux triés sont tous des tableaux associatifs, les noms de clés d'origine seront conservés. S'il existe un tableau d'index, l'index sera rétabli dans l'ordre.

  1. $array1 = array('one'=>'10',2=>'20',3=>'20',4=>10);    
    $array2 = array('one'=>'10','2'=>'30','3'=>'20','four'=>'1');    
    $array3 = array('one'=>'C','2'=>'A','3'=>'B','four'=>'F');    
        
    array_multisort($array1,$array2,$array3);    
      
    print_r($array1); //Array ( [0] => 10 [one] => 10 [1] => 20 [2] => 20 )   
    print_r($array2); //Array ( [four] => 1 [one] => 10 [0] => 20 [1] => 30 )   
    print_r($array3); //Array ( [four] => F [one] => C [0] => B [1] => A )

Tri de tableaux multidimensionnels.

Nous avons généralement des tableaux multidimensionnels qui doivent être triés :

  1. $guys = array(  
        array('name'=>'jake', 'score'=>80, 'grade' =>'A'),  
        array('name'=>'jina', 'score'=>70, 'grade'=>'A'),  
        array('name'=>'john', 'score'=>70, 'grade' =>'A'),  
        array('name'=>'ben', 'score'=>20, 'grade'=>'B')  
    );  
    //例如我们想按成绩倒序排列,如果成绩相同就按名字的升序排列。  
    //这时我们就需要根据$guys的顺序多弄两个数组出来:  
    $scores = array(80,70,70,20);  
    $names = array('jake','jina','john','ben');  
    //然后  
    array_multisort($scores, SORT_DESC, $names, $guys);  
      
    foreach($guys as $v){  
        print_r($v);  
        echo "<br/>";  
    }  
    /* 
    Array ( [name] => jake [score] => 80 [grade] => A ) 
    Array ( [name] => jina [score] => 70 [grade] => A ) 
    Array ( [name] => john [score] => 70 [grade] => A ) 
    Array ( [name] => ben [score] => 20 [grade] => B ) 
    */

Recommandations associées :

Paire php Fonction array_multisort() pour trier plusieurs tableaux ou tableaux multidimensionnels

10 articles recommandés sur array_multisort()

PHP array_multisort() Notes sur l'utilisation des fonctions

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