Maison  >  Article  >  développement back-end  >  Comment trier un tableau 2D en utilisant PHP

Comment trier un tableau 2D en utilisant PHP

PHPz
PHPzoriginal
2023-04-20 15:05:351559parcourir

Le tri d'un tableau bidimensionnel est une tâche très courante en PHP. Lorsque vous traitez de grandes quantités de données, le tri d’un tableau peut grandement améliorer l’efficacité de votre code. Pour un seul tableau, vous pouvez trier par ordre croissant et décroissant à l'aide de fonctions telles que sort() et rsort(). Cependant, pour les tableaux à deux dimensions, davantage de code est nécessaire pour implémenter le tri. Cet article explique comment utiliser PHP pour trier un tableau à deux dimensions, y compris le tri par colonnes spécifiées, le tri multi-colonnes et les fonctions de tri personnalisées.

1. Trier par colonnes spécifiées

Nous pouvons utiliser la fonction intégrée usort() de PHP pour effectuer le tri. La fonction usort() est similaire à la fonction sort(), mais elle nous permet d'utiliser une fonction personnalisée pour le tri. Pour trier un tableau 2D par une colonne spécifiée, nous devons écrire une fonction de tri personnalisée et la transmettre à la fonction usort(). Voici un exemple simple de tri par la deuxième colonne dans un tableau à deux dimensions :

<?php 

function sortBySecondColumn($a, $b) {

    return $a[1] - $b[1];

}

$people = array(

    array(&#39;Tom&#39;, 23),

    array(&#39;Jack&#39;, 31),

    array(&#39;Mary&#39;, 27),

);

usort($people, &#39;sortBySecondColumn&#39;);

print_r($people);

?>

Le résultat est :

Array

(

    [0] => Array

        (

            [0] => Tom

            [1] => 23

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Jack

            [1] => 31

        )

)

Notre fonction personnalisée sortBySecondColumn() compare la deuxième colonne des tableaux $a et $b et les trie selon son ordre croissant ou décroissant. La fonction usort() réorganisera le tableau selon notre fonction de tri personnalisée.

2. Tri multi-colonnes

Si nous devons trier sur plusieurs colonnes, nous pouvons modifier légèrement notre fonction personnalisée et ajouter plus de conditions pour chaque colonne. Pour trier un tableau par première et deuxième colonnes, veuillez vous référer au code suivant :

<?php 

function sortByMultipleColumns($arr, $col1, $col2) {

    foreach ($arr as $key => $row) {

        $column1[$key] = $row[$col1];

        $column2[$key] = $row[$col2];

    }

    array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $arr);

    return $arr;

}

$people = array(

    array('Tom', 31),

    array('Tom', 25),

    array('Mary', 27),

    array('Mary', 29),

);

$people = sortByMultipleColumns($people, 0, 1);

print_r($people);

?>

Le résultat sera :

Array

(

    [0] => Array

        (

            [0] => Mary

            [1] => 29

        )

    [1] => Array

        (

            [0] => Mary

            [1] => 27

        )

    [2] => Array

        (

            [0] => Tom

            [1] => 31

        )

    [3] => Array

        (

            [0] => Tom

            [1] => 25

        )

)

Dans le code ci-dessus, nous avons ajouté un tableau pour chaque colonne puis utilisé array_multisort() La fonction trie la première colonne par ordre croissant et la deuxième colonne par ordre décroissant. L'utilisation finale renvoie le tableau original de résultats triés.

3. Fonction de tri personnalisée

Lors de l'utilisation d'une fonction de tri personnalisée, nous pouvons définir un critère de tri pour chaque élément du tableau. La fonction personnalisée doit renvoyer une valeur utilisée pour comparer les autres éléments du tableau. Cette valeur de retour peut être positive, négative ou nulle, selon la façon dont les éléments sont comparés. Voici un exemple de fonction de filtre simple :

<?php 

function sortByLength($a, $b) {

    return strlen($a) - strlen($b);

}

$cities = array("Berlin", "Athens", "Madrid", "Rome", "Paris");

usort($cities, &#39;sortByLength&#39;);

print_r($cities);

?>

Le résultat est :

Array

(

    [0] => Rome

    [1] => Paris

    [2] => Berlin

    [3] => Athens

    [4] => Madrid

)

Dans l'exemple ci-dessus, nous avons défini une fonction personnalisée sortByLength() qui compare la longueur de chaque élément du tableau et le trie selon les tris par ordre croissant. ordre et renvoie positif, négatif ou zéro.

Conclusion

En PHP, nous trions un tableau bidimensionnel en utilisant la fonction usort(). Le tri par une colonne spécifiée nous oblige simplement à écrire une fonction de tri personnalisée et à la transmettre à la fonction usort(). Nous pouvons également trier sur plusieurs colonnes en ajoutant plusieurs conditions. Les fonctions de tri personnalisées nous permettent de définir davantage de critères de tri dans le tableau. Chaque programmeur doit être familiarisé avec ces techniques lors de la manipulation de tableaux bidimensionnels.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn