Comment trier un ensemble de tableaux associatifs par valeur d'une clé donnée en PHP

Minahil Noor 30 janvier 2023
  1. Utilisez la fonction array_multisort() pour trier un tableau de tableaux associatifs par la valeur d’une clé donnée en PHP
  2. Utilisez la fonction usort() pour trier un tableau de tableaux associatifs par la valeur d’une clé donnée en PHP
Comment trier un ensemble de tableaux associatifs par 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