Tri des tableaux

PHP dispose de nombreuses fonctions pour trier les tableaux, et cette section du manuel va aider Ă  s'y retrouver.

Les différences principales sont :

  • Certains des tris de tableau sont basĂ©s sur les clĂ©s, tandis que les autres sont basĂ©s sur les valeurs : $array['cle'] = 'valeur';
  • Certains tris maintiennent la corrĂ©lation entre les clĂ©s et les valeurs, et d'autres non, ce qui signifie que les clĂ©s sont gĂ©nĂ©ralement rĂ©affectĂ©es numĂ©riquement (0,1,2 ...)
  • L'ordre du tri peut ĂȘtre : alphabĂ©tique, croissant, dĂ©croissant, numĂ©rique, naturel, alĂ©atoire, ou dĂ©fini par l'utilisateur.
  • Note : toutes ces fonctions de tris travaillent sur le tableau lui-mĂȘme, contrairement Ă  la pratique normale qui serait de retourner le tableau triĂ©.
  • Si une de ces fonctions de tri Ă©value 2 membres comme Ă©gaux, alors ils retiennent l'ordre original. AntĂ©rieur Ă  PHP 8.0.0, leur ordre Ă©tait indĂ©fini (le tri n'Ă©tait pas stable).

Attributs de fonctions de tri
Nom de la fonction Tri par Association clé-valeur Ordre de tri Fonctions associées
array_multisort() valeur clés string oui, clés int non premier tableau, ou bien options de tri array_walk()
asort() valeur oui croissant arsort()
arsort() valeur oui décroissant asort()
krsort() clé oui décroissant ksort()
ksort() clé oui croissant krsort()
natcasesort() valeur oui naturel, insensible Ă  la casse natsort()
natsort() valeur oui naturel natcasesort()
rsort() valeur non décroissant sort()
shuffle() valeur non aléatoire array_rand()
sort() valeur non croissant rsort()
uasort() valeur oui Défini par une fonction utilisateur uksort()
uksort() clé oui Défini par une fonction utilisateur uasort()
usort() valeur non Défini par une fonction utilisateur uasort()
add a note

User Contributed Notes 2 notes

up
147
"Matthew Rice" ¶
13 years ago
While this may seem obvious, user-defined array sorting functions ( uksort(), uasort(), usort() ) will *not* be called if the array does not have *at least two values in it*.

The following code:                        

<?php

function usortTest($a, $b) {
    var_dump($a);
    var_dump($b);
    return -1;
}

$test = array('val1');
usort($test, "usortTest");

$test2 = array('val2', 'val3');
usort($test2, "usortTest");

?>

Will output: 

string(4) "val3"
string(4) "val2"

The first array doesn't get sent to the function.

Please, under no circumstance, place any logic that modifies values, or applies non-sorting business logic in these functions as they will not always be executed.
up
2
oculiz at gmail dot com ¶
15 years ago
Another way to do a case case-insensitive sort by key would simply be:

<?php
uksort($array, 'strcasecmp');
?>

Since strcasecmp is already predefined in php it saves you the trouble to actually write the comparison function yourself.