323 votes

Comment trier les tableaux et les données en PHP ?

Cette question est destinée à servir de référence pour les questions relatives au tri des tableaux en PHP. Il est facile de penser que votre cas particulier est unique et mérite une nouvelle question, mais la plupart sont en fait des variations mineures de l'une des solutions de cette page.

Si votre question est fermée parce qu'elle fait double emploi avec celle-ci, demandez à ce qu'elle soit rouverte uniquement si vous pouvez expliquer pourquoi elle diffère sensiblement de toutes les questions ci-dessous.

Comment trier un tableau en PHP ?
Comment trier un complexe tableau en PHP ?
Comment trier un tableau d'objets en PHP ?


  1. Tableaux unidimensionnels de base ; y compris les tableaux multidimensionnels, y compris les tableaux d'objets ; y compris le tri d'un tableau en fonction d'un autre.

  2. Triage avec SPL

  3. Tri stable

Pour la réponse pratique utilisant les fonctions existantes de PHP, voir 1., pour la réponse académique détaillée sur les algorithmes de tri (que les fonctions de PHP implémentent et que vous ), voir 2. mai nécessaire pour les cas vraiment, vraiment complexes), voir 2.

0 votes

@jterry Exactement, c'est pour cela que je l'ai fait, pour avoir enfin une bonne question de référence pour conclure. Répondre à chaque flocon de neige individuellement n'aide personne :)

3 votes

Je pense que les gens devraient simplement jeter un coup d'oeil à php.net.

0 votes

@Alex Ha ! Absolument. Le problème est que personne ne fait de RTFM. :D

-1voto

GT_hash Points 81

Il y a plusieurs façons de trier un tableau. Je vais mentionner quelques méthodes pour faire cette tâche. Tout d'abord, je vais donner un tableau de nombres entiers qui est appelé '$numbers'.

$number = array(8,9,3,4,0,1,2);

C'est la façon normale de créer un tableau. Supposons que je veuille trier ce tableau dans l'ordre croissant, pour cela, la méthode 'sort()' peut être utilisée.

<?php

    $number = array(8,9,3,4,0,1,2);
    sort($number);

   foreach ($number as $value) {
       echo $value."  ";
   }
?>

Maintenant, considérez le résultat de cela,

enter image description here

Vous pouvez voir que le tableau des nombres imprimés est trié. Si vous voulez que le tableau de chiffres soit trié par ordre décroissant, la méthode 'rsort()' peut être utilisée pour cette tâche.

<?php

     $number = array(8,9,3,4,0,1,2);
     rsort($number);

     foreach ($number as $value) {
        echo $value."  ";
     }
?>

considérer la sortie..

enter image description here

Maintenant le tableau est trié en ordre descendant. Ok, considérons un tableau associatif. Je vais donner un tableau associatif (tableau associatif signifie que, un tableau dont chaque index a une valeur clé unique.) comme ceci,

$number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);

Donc ,Maintenant je veux trier ce tableau dans l'ordre ascendant selon leur valeur. La méthode 'asort()' peut être utilisée pour cela.

<?php

   $number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);
   asort($number);

   foreach ($number as $value) {
      echo $value."  ";
    }
?>

Si l'on veut trier par ordre décroissant selon leur valeur, on peut utiliser la méthode 'arsort()'. Supposons que vous vouliez trier ce tableau en fonction de la valeur de leur clé. Dans ce cas, la méthode 'ksort()' peut être utilisée.

<?php

     $number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);
     ksort($number);

     foreach ($number as $value) {
         echo $value."  ";
     }
?>

Considérons maintenant la sortie. enter image description here

Maintenant, le tableau est trié selon leur valeur clé. Si vous voulez trier le tableau dans l'ordre décroissant selon leur valeur clé, la méthode 'krsort()' peut être utilisée.

<?php

    $number = array('eight'=>8,'nine'=>9,'three'=>3,'fore'=>4,'zero'=>0,'one'=>1,'two'=>2);
    krsort($number);

    foreach ($number as $value) {
       echo $value."  ";
    }
?>

Maintenant le tableau associatif est trié en ordre descendant selon leur valeur clé. Regardez la sortie. enter image description here

Ce sont les quelques méthodes pour trier un tableau en ordre croissant ou décroissant en php.j'espère que vous pourrez vous faire une idée.merci !

0 votes

Est-ce que Deceze ne couvre pas déjà ces idées avec : "La différence entre ces dernières consiste simplement à savoir si les associations clé-valeur sont conservées (les fonctions "a"), si elle trie de bas en haut ou inversement ("r"), si elle trie les valeurs ou les clés ("k") et comment elle compare les valeurs ("nat" vs. normal)." dans la réponse acceptée ?

-1voto

Rizerzero Points 66

Si quelqu'un souhaite une solution plus simple pour manipuler des tableaux, il suffit d'utiliser le package Laravel Collection qui dispose d'une fonction sortBy implémentée permettant de trier simplement par clés.

$collection->sortBy('forename')->sortBy('surname');

c'est-à-dire que pour trier d'abord par a, puis b, puis c, la clause correcte serait

sortBy('c')->sortBy('b')->sortBy('a')

https://packagist.org/packages/tightenco/collect

-2voto

pihu Points 72

Le plus simple est d'utiliser la fonction usort pour trier le tableau sans aucune boucle : Voici un exemple :

   $array_compare= array("0" =>4,"1"=>2,"2"=>500,"3"=>100);

Le tri se fera par ordre décroissant :

usort($array_compare, function($a, $b) {
        return ($b['x1'] - $a['x1']) > 0 ? 1 :-1;
    });

Le tri se fera par ordre croissant :

usort($array_compare, function($a, $b) {
        return ($b['x1'] - $a['x1']) < 0 ? 1 :-1;
    });

1 votes

1) L'exemple et le code sont incohérents. 2) Ceci est déjà expliqué de manière très détaillée dans les réponses ci-dessus. 3) Essayez-vous de répondre à une autre question ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X