Maison > Article > développement back-end > Tri stable des tableaux PHP : maintenir l'ordre des éléments égaux
Un tri stable des tableaux PHP peut être obtenu en : créant un comparateur personnalisé qui prend en compte l'index d'origine lors de la comparaison ; en utilisant la fonction uasort() pour trier les valeurs en fonction de la clé et en définissant la valeur sur l'élément contenant l'index d'origine. ; ces méthodes garantissent que les éléments égaux sont dans le même ordre de tri que dans leur ordre d'origine.
Tri stable des tableaux PHP : maintenir l'ordre des éléments égaux
Introduction
Le tri stable garantit que l'ordre des éléments égaux après le tri est le même que l'ordre d'origine. Pour un tri stable, les comparaisons suivantes sont valides :
a == b => sort(a) <= sort(b)
Les fonctions natives sort()
et rsort()
du tableau PHP sont instables. Cet article explorera les méthodes de tri stable. sort()
和 rsort()
函数是不稳定的。本篇文章将探究稳定排序的方法。
方法
1. 自定义比较器
使用自定义比较器,在相等元素时比较它们的原始索引:
function cmp($a, $b) { if ($a == $b) { return 0; } return $a < $b ? -1 : 1; }
然后在 usort()
或 uksort()
函数中使用它:
usort($arr, 'cmp');
2. 使用 uasort()
uasort()
根据键对值进行排序,ksort()
Méthode
1. Comparateur personnalisé
Utilisez un comparateur personnalisé pour comparer les indices originaux des éléments lorsqu'ils sont égaux :$indices = array_keys($arr); uasort($arr, function($a, $b) use ($indices) { if ($a == $b) { return 0; } return $indices[array_search($a, $arr)] < $indices[array_search($b, $arr)] ? -1 : 1; });Puis dans
usort()
ou $scores = [ 'John' => 90, 'Mary' => 85, 'Bob' => 85, 'Alice' => 95 ]; uasort($scores, function($a, $b) { if ($a == $b) { return 0; } return $a < $b ? -1 : 1; }); print_r($scores);
2. Utilisez uasort()
uasort()
pour trier les valeurs en fonction des clés. , ksort()
trie les clés. Vous pouvez donc définir la valeur du tableau sur un élément contenant l'index d'origine, puis trier les clés : 🎜Array ( [Alice] => 95 [John] => 90 [Bob] => 85 [Mary] => 85 )🎜🎜 Exemple pratique 🎜🎜🎜 Trier un tableau de notes d'élèves par score tout en conservant l'ordre d'origine des élèves ayant le même score :🎜rrreee🎜Sortie:🎜rrreee🎜🎜Conclusion🎜🎜🎜Les méthodes répertoriées ci-dessus peuvent réaliser un tri stable des tableaux PHP afin que l'ordre des éléments égaux soit maintenu. 🎜
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!