Maison > Article > développement back-end > Comment trier plusieurs tableaux ou tableaux multidimensionnels à l'aide de la fonction array_multisort ?
array_multisort() peut être utilisé pour trier plusieurs tableaux à la fois, ou pour trier des tableaux multidimensionnels selon une ou plusieurs dimensions.
array_multisort — Trier plusieurs tableaux ou tableaux multidimensionnels
Description
bool array_multisort ( array ar1 [, Mixed arg [, Mixed ... [, array ...]]] )
array_multisort
(PHP 4, PHP 5)
Renvoie VRAI en cas de succès, FALSE en cas d'échec.
array_multisort() peut être utilisé pour trier plusieurs tableaux à la fois, ou pour trier des tableaux multidimensionnels selon une ou plusieurs dimensions.
Les noms de clés associatives (chaînes) restent inchangés, mais les noms de clés numériques seront réindexés.
Le tableau d'entrée est traité comme une colonne de table et trié par ligne - ceci est similaire à la fonctionnalité de la clause ORDER BY de SQL. Le premier tableau est le tableau principal à trier. Si les lignes (valeurs) du tableau sont comparées comme étant identiques, elles sont triées en fonction de la taille de la valeur correspondante dans le tableau d'entrée suivant, et ainsi de suite.
La structure des paramètres de cette fonction est quelque peu inhabituelle, mais très flexible. Le premier paramètre doit être un tableau. Chacun des arguments suivants peut être un tableau ou un indicateur de tri répertorié ci-dessous.
Trier les indicateurs d'ordre :
SORT_ASC - Trier par ordre croissant
SORT_DESC - Trier par ordre décroissant
Trier les indicateurs de type :
SORT_REGULAR - Trier par ordre croissant Les articles sont comparés selon la méthode habituelle
SORT_NUMERIC – les articles sont comparés selon des valeurs numériques
SORT_STRING – les articles sont comparés selon des chaînes
Non deux du même type peuvent être spécifiés après chaque indicateur de tri de tableau. Les indicateurs de tri spécifiés après chaque tableau ne sont valables que pour ce tableau – avant cela, les valeurs par défaut SORT_ASC et SORT_REGULAR étaient utilisées.
Exemple 1. Trier plusieurs tableaux
<?php $ar1 = array(“10″, 100, 100, “a”); $ar2 = array(1, 3, “2″, 1); array_multisort($ar1, $ar2); var_dump($ar1); var_dump($ar2); ?>
Dans cet exemple, après le tri, le premier tableau contiendra "10", "a", 100, 100. Le deuxième tableau contiendra 1,1,"2",3. L'ordre des éléments du deuxième tableau est exactement le même que l'ordre des éléments correspondants (100 et 100) du premier tableau.
array(4) { [0]=> 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) }
Exemple 2. Tri de tableaux multidimensionnels
<?php $ar = array (array (“10″, 100, 100, “a”), array (1, 3, “2″, 1)); array_multisort ($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); ?>
Dans cet exemple, après tri, le premier tableau contiendra 10, 100, 100, "a" (trié sous forme de chaîne croissante), le deuxième tableau contiendra 1, 3, "2", 1 (trié sous forme de valeur numérique décroissante).
Exemple 3. Tri d'un tableau multidimensionnel
<?php $ar = array( array(“10″, 11, 100, 100, “a”), array( 1, 2, “2″, 3, 1) ); array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); var_dump($ar); ?>
Dans cet exemple, après tri, le premier tableau deviendra "10", 100, 100, 11, "a" (Traité sous forme de chaîne par ordre croissant). Le deuxième tableau contiendra 1, 3, « 2 », 2, 1 (traités comme des nombres par ordre décroissant).
array(2) { [0]=> 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) } }
Exemple 4. Tri des résultats de la base de données
Dans cet exemple, chaque cellule du tableau de données représente une ligne dans un tableau. Il s'agit d'une collection typique de données enregistrées dans une base de données.
Les données dans l'exemple sont les suivantes :
volume | édition
——-+——–
67 | | 2
86 | 6
67 | 7
Les données sont toutes stockées dans le tableau nommé data. Ceci est généralement obtenu à partir de la base de données via une boucle, telle que
mysql_fetch_assoc
().
Dans cet exemple, le volume sera trié par ordre décroissant et l'édition sera triée par ordre croissant.
<?php $data[] = array(‘volume' => 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); ?>
La collecte de données est désormais triée, et les résultats sont les suivants :
<?php // 取得列的列表 foreach ($data as $key => $row) { $volume[$key] = $row['volume']; $edition[$key] = $row['edition']; } // 将数据根据 volume 降序排列,根据 edition 升序排列 // 把 $data 作为最后一个参数,以通用键排序 array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); ?>volume | édition
——-+——–
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | Exemple 5. Tri insensible à la casse
SORT_STRING et SORT_REGULAR les deux Il fait la distinction entre les lettres majuscules et minuscules, et les lettres majuscules seront triées avant les lettres minuscules.
Pour effectuer un tri insensible à la casse, triez par copie minuscule du tableau d'origine.
L'exemple ci-dessus affichera :
Array ( [0] => Alpha [1] => atomic [2] => bank [3] => Beta )
补充资料:
对于PHP语言中的多维数组排序时最为复杂的一个排序方式。我们在实际编码中将会用到PHP函数array_multisort()来实现这一复杂的排序。例如,首先对一个嵌套数组使用一个普通的关键字进行排序,然后再根据另一个关键字进行排序。这与使用SQL的ORDER BY语句对多个字段进行排序非常相似。
PHP函数asort()利用值排序的具体方式解析
PHP函数arsort()的功能特点详解
PHP自然语言排序的特点介绍
PHP自然语言倒序的具体实现方式
如何运用PHP函数usort()实现自定义排序
Listing J示例为我们具体说明了PHP函数array_multisort()的工作方式:
1, "name" => "Boney M", "rating" => 3), array("id" => 2, "name" => "Take That", "rating" => 1), array("id" => 3, "name" => "The Killers", "rating" => 4), array("id" => 4, "name" => "Lusain", "rating" => 3), ); foreach ($data as $key => $value) { $name[$key] = $value[name]; $rating[$key] = $value[rating]; } array_multisort($rating, $name, $data); print_r($data);?> 这里,我们在$data数组中模拟了一个行和列数组。然后,我使用PHP函数array_multisort()对数据集合进行重排,首先是根据rating进行排序,然后,如果rating相等的话,再根据name排序。它的输出结果如下:
Array ([0] => Array ( [id] => 2 [name] => Take That [rating] => 1 ) [1] => Array ( [id] => 1 [name] => Boney M [rating] => 3 ) [2] => Array ( [id] => 4 [name] => Lusain [rating] => 3 ) [3] => Array ( [id] => 3 [name] => The Killers [rating] => 4 ) )
PHP函数array_multisort()是PHP中最有用的函数之一,它有非常广泛的应用范围。另外,就如你在例子中所看到的,它能对多个不相关的数组进行排序,也可以使用其中的一个元素作为下次排序的基础,还可以对数据库结果集进行排序。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!