Maison > développement back-end > tutoriel php > Explication détaillée de la fonction de tri de tableau PHP, fonction array_multisort()

Explication détaillée de la fonction de tri de tableau PHP, fonction array_multisort()

不言
Libérer: 2023-03-24 20:52:01
original
2416 Les gens l'ont consulté

Cet article présente l'explication détaillée de la fonction de tri de tableau PHP array_multisort(). Elle a une certaine valeur de référence. Maintenant, je la partage avec vous. Les amis dans le besoin peuvent se référer à la fonction

array_multisort(). . Plusieurs tableaux PHP peuvent être triés, et le résultat du tri est que tous les tableaux sont disposés dans l'ordre du premier tableau - un peu déroutant, vraiment, et vous ne devez pas comprendre si je dis simplement cela. Prenons d'abord un exemple :

例如array_multisort($a,$b),$a,$b是两个数组,如果排序之后,$a数组的第3个元
素被排到了第一位,那么$b的第三个元素不管他在$b中的大小都会排在第一位。看看下边
的程序运行结果:

$a =array(100,80,50,10,0);
$b = array("c","f","q","e","z");
array_multisort($a,$b);
var_dump($a);
var_dump($b);

运行结果:
array(5) { [0]=> int(0) [1]=> int(10) [2]=> int(50) [3]=> int(80) [4]=> int(100) }
array(5) { [0]=> string(1) “z” [1]=> string(1) “e” [2]=> string(1) “q” [3]=> string(1) “f” [4]=> string(1) “c” }


其实说明白了就是,array_multisort()先把第一个数组按照键值的大小排序,然后其它
数组都按照第一个数组的调整策略进行调整——第三个元素放到第一位,第二个元素放到第
二位……——其实这个多维数组排序算法的最基本体现!
Copier après la connexion
  • Cependant, il faut noter que le nombre d'éléments dans les deux tableaux doit être le même, sinon un message d'avertissement apparaîtra

Tout d'abord, jetons un coup d'œil à la méthode opérationnelle de tri de chaque élément [tableau] d'un tableau multidimensionnel. C'est très simple, mais il y a quelques paramètres qui doivent l'être. expliqué. Si vous connaissez quelque chose sur SQL, vous le comprendrez probablement d'un coup d'œil :

//让我们来构造一个多维数组
$a=array(100,2,4,7,7);
$b=array('ab','ac','ad','ag','ap');

$ab = array($a,$b);
//开始排序
array_multisort($ab[0],SORT_NUMERIC,SORT_DESC,$ab[1],SORT_STRING,SORT_ASC);
print_r($ab);

说明一下:首先我们用SORT_NUMERIC来声明对$ab[0]用数字类型排序,用SORT_DESC声
明顺序是逆序(从大到小),然后我们对$ab[1]用字符串类型排序,顺序是升序(顺序)

最后数组$ab的排序结果是两者的结合,先按$ab[0]的逆序,如果$ab[0]中存在大小相同
的数值则按照$ab[1]的顺序排列,输出结果如下:

Array (
    [0] => Array ( [0] => 100 [1] => 7 [2] => 7 [3] => 4 [4] => 2 )
    [1] => Array ( [0] => ab [1] => ag [2] => ap [3] => ad [4] => ac )
)
Copier après la connexion

Regardons maintenant un exemple plus proche d'une application pratique :

$array[] = array("age"=>20,"name"=>"li");
$array[] = array("age"=>21,"name"=>"ai");
$array[] = array("age"=>20,"name"=>"ci");
$array[] = array("age"=>22,"name"=>"di");

foreach ($array as $key=>$value){
     $age[$key] = $value['age'];
     $name[$key] = $value['name'];
}

array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$array);
print_r($array);
Copier après la connexion

Le tableau $array[] dans cet exemple est construit sur la base des enregistrements lus dans la base de données, nous allons maintenant les trier par ordre d'âge du plus ancien au plus jeune, et s'ils ont le même âge, nous les trierons par ordre de nom . Ce type de tri est ce que nous utiliserons souvent à l'avenir

Parce que le paramètre de tri requis par array_multisort() doit être une colonne, nous utilisons donc foreach pour lire l'âge et le nom de ce tableau. suivant?

就像上边的例子一样,进行排序,最后一个参数$array想必大家也看见了,是的这里需要
声明对哪个数组进行排序,因为我们前边两个参数在形式上已经和需要排序的PHP数组没有
关系了,虽然其实他们就是$array中的数据——我们从$array中抽取的列——排序当然是需
要列,还没见过用行数据进行排序的呢!
Copier après la connexion

Le résultat de sortie est le suivant - exactement comme nous le pensions :

Array (
    [0] => Array ( [age] => 22 [name] => di )
    [1] => Array ( [age] => 21 [name] => ai )
    [2] => Array ( [age] => 20 [name] => ci )
    [3] => Array ( [age] => 20 [name] => li )
)
Copier après la connexion

Vous voyez, c'est en fait très simple, c'est juste que les quelques paramètres qui doivent être capitalisés sont un un peu ennuyeux ! Même si c'est un peu difficile à comprendre, ce sera formidable si vous le comprenez, ce sera très utile à l'avenir !

array_multisort(array1,ordre de tri,type de tri,array2,array3…)

  • ordre de tri facultatif. Spécifiez l'ordre de tri. Valeurs possibles :

    SORT_ASC - Par défaut. Trier par ordre croissant (A-Z).
    SORT_DESC - Trier par ordre décroissant (Z-A).

  • le type de tri est facultatif. Spécifie le type de tri. Valeurs possibles :

    SORT_REGULAR - Par défaut. Mettez chaque élément dans un ordre régulier (ASCII standard, ne changez pas le type).
    SORT_NUMERIC - traitez chaque élément comme un nombre.
    SORT_STRING - Traitez chaque élément comme une chaîne.
    SORT_LOCALE_STRING - Traitez chaque élément comme une chaîne, en fonction des paramètres régionaux actuels (peut être modifié via setlocale()).
    SORT_NATURAL - Traitez chaque élément comme une chaîne, en utilisant le tri naturel comme natsort().
    SORT_FLAG_CASE - Peut être combiné (OU au niveau du bit) avec SORT_STRING ou SORT_NATURAL pour trier les chaînes, sans tenir compte de la casse.

Recommandations associées :

fonction de tri de tableau php usort uksort


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal