Comment trier un ensemble de tableaux associatifs par valeur d'une clé donnée en PHP
-
Utilisez la fonction
array_multisort()
pour trier un tableau de tableaux associatifs par la valeur d’une clé donnée en PHP -
Utilisez la fonction
usort()
pour trier un tableau de tableaux associatifs par la valeur d’une clé donnée en PHP
Cet article présente des méthodes pour trier un tableau
de tableaux associatifs par la valeur d’une clé donnée en PHP.
- Utilisation de la fonction
array_multisort()
- Utilisation de la fonction
usort()
Utilisez la fonction array_multisort()
pour trier un tableau de tableaux associatifs par la valeur d’une clé donnée en PHP
Nous pouvons utiliser la fonction intégrée array_multisort()
pour trier un array
de tableaux associatifs par la valeur d’une clé donnée. Elle peut trier plusieurs tableaux à la fois ou un tableau
multidimensionnel. La syntaxe correcte pour utiliser cette fonction est la suivante
str_replace($arrayName, $sort_order, $sort_flags);
La fonction intégrée array_multisort()
a trois paramètres. Les détails de ses paramètres sont les suivants
Paramètres | Description | |
---|---|---|
$arrayName |
obligatoire | C’est le tableau que nous voulons trier. |
$sort_order |
facultatif | Il indique l’ordre dans lequel nous allons trier notre tableau. Il peut s’agir de SORT_ASC pour l’ordre ascendant et de SORT_DESC pour l’ordre descendant. Sa valeur par défaut est SORT_ASC . |
$sort_flags |
facultatif | Il présente les possibilités de tri. Vous pouvez le lire ici. |
Cette fonction retourne TRUE si elle est réussie. Sinon, elle retourne FALSE.
Le programme ci-dessous montre comment nous pouvons utiliser la fonction array_multisort()
pour trier un tableau de tableaux associatifs par la valeur d’une clé donnée.
<?php
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
$marks = array();
foreach ($result as $key => $row)
{
$marks[$key] = $row['marks'];
}
array_multisort($marks, SORT_DESC, $result);
print_r($result);
?>
Nous avons créé un tableau $marks
contenant les marques du tableau
original. Ensuite, nous avons utilisé la fonction array_multisort()
pour trier le tableau $marks
en fonction du tableau $result
. La sortie sera le tableau $resultat
trié.
Production:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
Le array
est trié en ordre décroissant par la valeur de la clé marks.
Utilisez la fonction usort()
pour trier un tableau de tableaux associatifs par la valeur d’une clé donnée en PHP
En PHP, nous pouvons également utiliser la fonction usort()
pour trier un tableau
de tableaux associatifs par la valeur d’une clé donnée. Cette fonction trie le tableau
en utilisant une fonction définie par l’utilisateur. La syntaxe correcte pour utiliser cette fonction est la suivante:
preg_replace($arrayName, $functionName);
La fonction usort()
accepte deux paramètres. Le détail de ses paramètres est le suivant
Paramètres | Description | |
---|---|---|
$arrayName |
obligatoire | C’est le tableau que nous voulons trier |
$functionName |
obligatoire | C’est la fonction définie par l’utilisateur qui va trier le tableau passé. |
Elle retourne TRUE si elle réussit, FALSE sinon. Le programme qui trie le tableau est le suivant:
<?php
function DescSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] < $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'DescSort');
print_r($result);
?>
Production:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
Pour un tri ascendant, la fonction sera:
<?php
function AscSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] > $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'AscSort');
print_r($result);
?>
Production:
Array
(
[0] => Array
(
[firstname] => Stefan
[marks] => 5
)
[1] => Array
(
[firstname] => Lili
[marks] => 40
)
[2] => Array
(
[firstname] => Jacob
[marks] => 60
)
[3] => Array
(
[firstname] => Olivia
[marks] => 85
)
[4] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[5] => Array
(
[firstname] => Henry
[marks] => 100
)
)
Article connexe - PHP Array
- Comment déterminer la première et la dernière itération d'une boucle de foreach dans le PSP
- Comment convertir un tableau en chaîne de caractères en PHP
- Comment obtenir le premier élément d'un tableau en PHP
- Comment faire écho ou imprimer un tableau en PHP
- Comment supprimer un élément d'un tableau en PHP
- Comment supprimer des éléments de tableau vides en PHP