PHP: Comment trier les valeurs d'un tableau dans l'ordre alphabétique?
Je veux trier les valeurs d'un tableau dans l'ordre alphabétique en PHP. Si toutes les valeurs commencé avec le même caractère, ils doivent être triés à l'aide de caractères deuxième et ainsi de suite. Ignorer la casse.
Par Exemple:
before:
values[0] = "programming";
values[1] = "Stackoverflow";
values[2] = "question";
values[3] = "answers";
values[4] = "AA Systems";
after:
values[0] = "AA Systems";
values[1] = "answers";
values[2] = "programming";
values[3] = "question";
values[4] = "Stackoverflow";
J'ai trouvé certains algorithmes, mais je veux une façon rapide et avec un petit nombre d'états. En ignorant la casse est spécial pour moi. Merci.
source d'informationauteur NAVEED
Vous devez vous connecter pour publier un commentaire.
Voir
natcasesort
: http://www.php.net/manual/en/function.natcasesort.phpusort
: http://www.php.net/manual/en/function.usort.php avec un comparateur de fonction qui comparestrtolower(a)
etstrtolower(b)
.Votre exemple fait deux hypothèses:
Que vous ne travailler qu'avec de simples, 1-dimensions des tableaux.
Qu'après le tri par ordre alphabétique, votre indice de mise à jour, de sorte que le premier élément par ordre alphabétique sera attribué à la touche 0 et ainsi de suite.
Compte tenu de ces paramètres, votre solution la plus simple est d'utiliser la méthode de la baie
sort()
. Avec votre exemple:Le résultat sera le suivant:
Il y a d'autres de la matrice de fonctions de tri qui pourrait être un meilleur ajustement. Par exemple, le simple fait que j'utilise ci-dessus met en majuscule, en face de bas-de-casse, donc si vous avez eu la "sécurité" comme un point (tout en minuscules), il irait après "Stackoverflow" depuis le haut-cas
s
priorité surse
vsst
. Pour le tri, sans la casse, vous pouvez utilisernatcasesort()
qui produirait le suivant avec le tableau donné:De la version 5.4.0, vous pouvez simplement utiliser l'une quelconque des
sort
asort
ksort
etc. fonctions et passer leSORT_FLAG_CASE
drapeau.Si vous avez une ancienne version et ne sont pas prêts à mettre à jour (ou ne peuvent pas), vous pouvez utiliser
natcasesort
comme d'autres l'ont mentionné, mais aussi lauasort
etksort
variantes avecstrcasecmp
que la fonction personnalisée:Vous pouvez appliquer le même concept à l'un des autres les fonctions de tri.
Vous pouvez utiliser
uasort()
: http://php.net/manual/en/function.uasort.phpLe deuxième argument est une fonction qui permet de comparer les valeurs. La fonction doit retourner -1, 0 ou 1. Voici un modèle que vous pouvez utiliser pour vos fonctions personnalisées.
Après le tri, vous pouvez réinitialiser les indices de tableau.