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; });
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 )
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!