10
votes

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 ont commencé avec le même caractère, elles doivent être triées à l'aide de second caractère, etc. Ignorer la sensible à la casse.

Par exemple: P>

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";


0 commentaires

4 Réponses :


14
votes

voir


1 commentaires

Vous vouliez sûrement dire strcasecmp comme comparateur personnalisé? : P



5
votes

Votre exemple fait deux hypothèses:

  1. que vous ne faites que traiter avec des tableaux simples et 1 dimensions.

  2. qu'après tri alphabétiquement, votre index se mettra à jour de sorte que le premier élément alphabétiquement soit attribué à la clé 0, etc.

    Compte tenu de ces paramètres, votre solution la plus simple consiste à utiliser la méthode de la matrice Trier () . Avec votre exemple: xxx

    qui aboutira aux éléments suivants: xxx

    Il y a Autres fonctions de tri des array Cela pourrait être meilleur. Par exemple, le simple que j'utilise ci-dessus met en majuscule devant des minuscules, de sorte que si vous aviez "Sécurité" comme élément (tous minuscules), cela irait après "Stackoverflow" depuis le majuscule s prendrait la priorité sur SE vs. code> st . Pour trier sans cas de sensibilité, vous pouvez utiliser NatCaseSort () , qui produirait ce qui suit avec le tableau donné: xxx


1 commentaires

Trier est sensible à la casse. Stackoverflow serait placé avant réponses.



4
votes

à partir de la version 5.4.0, vous pouvez simplement utiliser l'un des trier code>, ASORT code>, ksort code>, etc. fonctionne et passez la sort_flag_case code> indicateur.

natcasesort( $array );          // Non-associative array
uasort( $array, 'strcasecmp' ); // Associative array
uksort( $array, 'strcasecmp' ); // Associative array, sort by indices


1 commentaires

La bonne réponse pour cette question est ksort ($ data, sort_flag_case | Sort_natural);



0
votes

Vous pouvez utiliser uasort () code>: http: // php.net/manual/fr/function.uasort.php xxx pré>

Le deuxième argument est une fonction, qui compare les valeurs. La fonction doit renvoyer -1, 0 ou 1. Voici un modèle que vous pouvez utiliser pour vos fonctions personnalisées. P>

$arr = array_values( $arr );


0 commentaires