array_multisort
Tri multi-dimensionnel de tableaux
&reftitle.description;
boolarray_multisort
arrayar1
mixedarg
mixed...
array...
&return.success;
array_multisort sert à trier simultanément
plusieurs tableaux, ou bien à trier un tableau multi-dimensionnel,
suivant l'une ou l'autre de ses dimensions.
Les clés associatives (&string;) seront maintenues, mais
les clés numériques seront réindexées.
Les tableaux passés en arguments ar1,
arg, ... sont traités comme les colonnes
d'une table, triées par lignes (un peu comme la clause SQL ORDER BY).
Le premier tableau est la clé primaire de tri. Les valeurs du premier
tableau qui sont égales, sont triées grâce au tableau suivant,
et ainsi de suite...
La structure des arguments de array_multisort est un peu
inhabituelle, mais elle est plus souple. Le premier argument doit être
un tableau. Par la suite, chaque arguement peut être soit un tableau, soit
une option de tri prise parmis les valeurs suivantes :
Options de tri :
SORT_ASC : Tri en ordre ascendant
SORT_DESC : Tri en ordre descendant
Options de type de tri :
SORT_REGULAR : Comparaison normale des valeurs
SORT_NUMERIC : Comparaison numérique des valeurs
SORT_STRING : Comparaison alphabétique des valeurs
Une seule option de tri de chaque type peut être appliquée
après un tableau. Une option ne s'applique qu'au tableau
précédent. Tous les autres sont mis par défaut
à SORT_ASC et SORT_REGULAR.
Trier plusieurs tableaux
]]>
Dans cet exemple, après le tri, le premier
tableau contient 10, "a", 100, 100; Le deuxième tableau
contient 1, 1, "2", 3. Les entrées du second tableau
correspondant aux valeurs jumelles du premier
tableau (100 et 100), sont aussi triées.
string(2) "10"
[1]=> string(1) "a"
[2]=> int(100)
[3]=> int(100)
}
array(4) {
[0]=> int(1)
[1]=> int(1)
[2]=> string(1) "2"
[3]=> int(3)
}
]]>
Classer un tableau multi-dimensionnel
]]>
Dans cet exemple, après le tri, le premier tableau contient
10, 100, 100, "a" (tri alphabétique, ordre croissant); Le
deuxième tableau contient 1, 3, "2", 1 (tri
numérique, ordre décroissant).
array(4) {
[0]=> string(2) "10"
[1]=> int(100)
[2]=> int(100)
[3]=> string(1) "a"
}
[1]=> array(4) {
[0]=> int(1)
[1]=> int(3)
[2]=> string(1) "2"
[3]=> int(1)
}
}
]]>
Classer les résultats d'une base de données
Dans cet exemple, chaque élément du tableau data
représente une ligne de la table. Ce type de données est typique d'un
enregistrement de base de données.
Exemple de données :
Les données sont sous forme de tableau, appelé data.
Celà est généralement issu, par exemple, par la fonction
mysql_fetch_assoc.
67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>
]]>
Dans cette exemple, nous allons trier la colonne volume
par ordre décroissant, et la colonne edition par ordre croissant.
Nous avons un tableau de lignes, mais array_multisort
nécessite un tableau de colonnes, donc, nous utilisons le code suivant pour
obtenir les colonnes et ainsi, effectuer le tri.
$row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Tri les données par volume décroissant, edition croissant
// Ajoute $data en tant que premier paramètre, pour trier par la clé commune
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
]]>
L'enregistrement est maintenant trié et ressemble à celà :
Tri non sensible à la casse
SORT_STRING et
SORT_REGULAR sont sensibles à la casse, les chaînes
de caractères commençant avec une lettre en majuscule viendront avant
les chaînes de caractères commençant par une lettre en minuscule.
Pour effectuer une recherche insensible à la casse, forcez l'ordre de tri
à être déterminé par un copie en minuscule du tableau original.
&example.outputs;
Alpha
[1] => atomic
[2] => bank
[3] => Beta
)
]]>