Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction Krsort avec array_multisort pour un tri plus complexe?

Comment utiliser la fonction Krsort avec array_multisort pour un tri plus complexe?

gitbox 2025-09-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Section avant(N&#39;a rien à voir avec le contenu de l&#39;article)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Bienvenue à lire cet article!&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Heure actuelle:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>) . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
titre: Comment krsort Fonctions et array_multisort Utilisez-le pour un tri plus complexe?

exister PHP milieu,Le tri des tableaux est une opération courante。krsort et array_multisort Ce sont deux fonctions puissantes,Mais l&#39;utilisation est différente。本文Volonté详细说明Comment它们结合utiliser,Pour atteindre des exigences de tri plus complexes。
*/</span>

<span class="hljs-comment">/*
1. krsort Introduction
krsort Utilisé pour trier descendante selon les clés d&#39;un tableau(De grand à petit)。La syntaxe est la suivante:
krsort(array &amp;$array, int $sort_flags = SORT_REGULAR): bool

Exemple:
*/</span>
</span><span><span class="hljs-variable">$data</span></span><span> = [
    </span><span><span class="hljs-string">'c'</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>,
    </span><span><span class="hljs-string">'a'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>,
    </span><span><span class="hljs-string">'b'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>,
];
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>); </span><span><span class="hljs-comment">// Tableaux de sortie organisés par ordre décroissant des clés ['c'=&gt;3,'b'=&gt;2,'a'=&gt;1]</span></span><span>

<span class="hljs-comment">/*
2. array_multisort Introduction
array_multisort Plusieurs tableaux ou tableaux multidimensionnels peuvent être triés ensemble,Très adapté aux besoins de tri complexes。Il peut non seulement trier par valeur,Vous pouvez également spécifier l&#39;ordre de tri(Commande ascendante/Ordre descendant)et类型。
*/</span>

<span class="hljs-comment">/*
3. Volonté krsort et array_multisort Utiliser en conjonction
Supposons que nous ayons un tableau multidimensionnel,需要先按键Ordre descendant排列,再按某个子元素的值Commande ascendante排序,Vous pouvez suivre les étapes suivantes:
*/</span>
</span><span><span class="hljs-variable">$users</span></span><span> = [
    </span><span><span class="hljs-string">'user3'</span></span><span> =&gt; [</span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">25</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">88</span></span><span>],
    </span><span><span class="hljs-string">'user1'</span></span><span> =&gt; [</span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">30</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">92</span></span><span>],
    </span><span><span class="hljs-string">'user2'</span></span><span> =&gt; [</span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">22</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span> =&gt; </span><span><span class="hljs-number">95</span></span><span>],
];

</span><span><span class="hljs-comment">// premier pas:按键Ordre descendant</span></span><span>
</span><span><span class="hljs-title function_ invoke__">krsort</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>);

</span><span><span class="hljs-comment">// Étape 2:Extraire les colonnes à tri</span></span><span>
</span><span><span class="hljs-variable">$ages</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span>);
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_column</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>, </span><span><span class="hljs-string">'score'</span></span><span>);

</span><span><span class="hljs-comment">// Étape 3:utiliser array_multisort Effectuer un tri multidimensionnel</span></span><span>
</span><span><span class="hljs-title function_ invoke__">array_multisort</span></span><span>(</span><span><span class="hljs-variable">$ages</span></span><span>, SORT_ASC, </span><span><span class="hljs-variable">$scores</span></span><span>, SORT_DESC, </span><span><span class="hljs-variable">$users</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>);

<span class="hljs-comment">/*
Explication des résultats:
1. Première passe krsort 按键Ordre descendant排列用户。
2. 然后utiliser array_multisort 对用户的年龄Commande ascendante排列,Si l&#39;âge est le même,则按分数Ordre descendant排列。
3. A enfin eu $users 数组既保持了按键Ordre descendant的初始顺序,Implémenter le tri complexe par valeur。

4. Conseils
- Lorsque le tableau est grand,Utiliser d&#39;abord krsort Trier les clés,Utiliser à nouveau array_multisort Trier les valeurs,Il peut assurer une logique de tri claire。
- array_multisort Prend en charge le tri multi-colonnes,utiliser array_column Extraire les colonnes correspondantes est la plus pratique。
- Si le tableau est un tableau associatif,N&#39;oubliez pas de d&#39;abord krsort Utiliser à nouveau array_multisort Réindex,Pour éviter la non-concordance des valeurs clés。
*/</span>

<span class="hljs-comment">/*
Résumer:
Volonté krsort et array_multisort 结合utiliser,Peut implémenter des exigences complexes de tri de tableau multidimensionnelles。krsort 负责按键的Ordre descendant排序,array_multisort Ensuite, plusieurs conditions peuvent être effectuées pour la valeur du tableau、Tri de type。Cette méthode de combinaison est à la fois flexible et efficace,Convient pour divers scénarios d&#39;application pratiques,Par exemple, la gestion des données des utilisateurs、Rapport de tri, etc.。
*/</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>