array_multisort
Trie les tableaux multidimensionnels
&reftitle.description;
boolarray_multisort
arrayarray1
mixedarray1_sort_orderSORT_ASC
mixedarray1_sort_flagsSORT_REGULAR
mixedrest
array_multisort sert à trier simultanément
plusieurs tableaux, ou bien à trier un tableau multidimensionnel,
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.
¬e.sort-unstable;
¬e.reset-index;
&reftitle.parameters;
array1
Un &array; à trier.
array1_sort_order
L'ordre utilisé pour trier le précédent argument
array. Soit la constante SORT_ASC
pour trier de façon croissant, soit la constante
SORT_DESC pour trier de façon décroissant.
Cet argument peut être associé avec le paramètre
array1_sort_flags ou simplement omis,
auquel cas, la constante SORT_ASC sera utilisée.
array1_sort_flags
Options de tri du précédent argument array :
Type d'options de tri :
SORT_REGULAR - compare les éléments normalement (pas de changement de type)
SORT_NUMERIC - compare les éléments numériquement
SORT_STRING - compare les éléments sous forme de chaînes de caractères
SORT_LOCALE_STRING - compare les éléments sous forme de chaînes de caractères,
en se basant sur la locale courante. La fonction utilise les locales, et elles peuvent être modifiées
en utilisant la fonction setlocale
SORT_NATURAL - compre les éléments sous forme de chaînes de caractères, en utilisant
le "tri naturel", comme le fait la fonction natsort
SORT_FLAG_CASE - peut être combiné (avec le mot clé OR) avec
SORT_STRING ou
SORT_NATURAL pour trier les chaînes sans tenir compte de la casse
Cet argument peut être associé avec le paramètre array1_sort_order
ou simplement omis, auquel cas, la constante SORT_REGULAR sera utilisée.
rest
Plus d'arguments, optionnellement suivis par des façons de trier et des
drapeaux. Seuls les éléments équivalents dans les tableaux précédents
sont comparés. En d'autres termes, le tri est lexicographique.
&reftitle.returnvalues;
&return.success;
&reftitle.examples;
Trier plusieurs tableaux
]]>
Dans cet exemple, après le tri, le premier
tableau contient 0, 10, 100, 100. Le deuxième tableau
contient 4, 1, 2, 3. Les entrées du second tableau
correspondant aux valeurs jumelles du premier
tableau (100 et 100), sont aussi triées.
int(0)
[1]=> int(10)
[2]=> int(100)
[3]=> int(100)
}
array(4) {
[0]=> int(4)
[1]=> int(1)
[2]=> int(2)
[3]=> int(3)
}
]]>
Trier un tableau multidimensionnel
]]>
Dans cet exemple, après le tri, le premier tableau contient
"10", 100, 100, 11, "a" (tri alphabétique, ordre croissant); Le
deuxième tableau contient 1, 3, "2", 2, 1 (tri
numérique, ordre décroissant).
array(5) {
[0]=> string(2) "10"
[1]=> int(100)
[2]=> int(100)
[3]=> int(11)
[4]=> string(1) "a"
}
[1]=> array(5) {
[0]=> int(1)
[1]=> int(3)
[2]=> string(1) "2"
[3]=> int(2)
[4]=> 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.
Cela est généralement le résultat, par exemple, de la fonction
mysqli_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 cet 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'];
}
// vous pouvez utiliser array_column() au lieu du code ci-dessus
$volume = array_column($data, 'volume');
$edition = array_column($data, 'edition');
// Trie les données par volume décroissant, edition croissant
// Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
]]>
Le jeu d'enregistrement est maintenant trié et ressemble à cela :
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 un tri insensible à la casse, effectuez le tri
sur une copie minuscule des colonnes du tableau original.
]]>
&example.outputs;
Alpha
[1] => atomic
[2] => bank
[3] => Beta
)
]]>
&reftitle.seealso;
usort
&seealso.array.sorting;