Maison > développement back-end > tutoriel php > Comment trier un tableau multidimensionnel en PHP par une clé spécifique ?

Comment trier un tableau multidimensionnel en PHP par une clé spécifique ?

Patricia Arquette
Libérer: 2024-12-20 11:35:08
original
235 Les gens l'ont consulté

How to Sort a Multi-Dimensional Array in PHP by a Specific Key?

Tri des tableaux multidimensionnels par une clé spécifique

Le tri des tableaux multidimensionnels par une valeur de clé spécifique peut être réalisé en utilisant diverses méthodes dans PHP. Explorons un problème courant et ses solutions à l'aide de cette technique.

Problème :

Comment trier un tableau en fonction de la clé « ordre » ?

Tableaux Structure :

$myArray = [
    [
        'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4',
        'title'   => 'Flower',
        'order'   => 3
    ],
    [
        'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594',
        'title'   => 'Free',
        'order'   => 2
    ],
    [
        'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b',
        'title'   => 'Ready',
        'order'   => 1
    ]
];
Copier après la connexion

Solutions :

1. Utilisation de usort avec une fonction personnalisée :

Cette méthode implique de définir une fonction de tri personnalisée qui compare les valeurs de « ordre » et renvoie un résultat de comparaison approprié.

function sortByOrder($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
}

usort($myArray, 'sortByOrder');
Copier après la connexion

2. Utilisation de fonctions anonymes :

Dans PHP 5.3 et versions ultérieures, des fonctions anonymes peuvent être utilisées pour simplifier la fonction de tri personnalisée.

usort($myArray, function($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
});
Copier après la connexion

3. Utilisation de l'opérateur de vaisseau spatial (PHP 7 et versions ultérieures) :

PHP 7 a introduit l'opérateur de vaisseau spatial (< =>) pour des opérations de comparaison concises.

usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});
Copier après la connexion

4. Utilisation des fonctions fléchées (PHP 7.4 et versions ultérieures) :

Les fonctions fléchées simplifient davantage le code en éliminant le mot-clé de fonction.

usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);
Copier après la connexion

Tri multidimensionnel :

Pour les tableaux avec des structures imbriquées, vous pouvez étendre la fonction de tri pour prendre en compte plusieurs clés. Cela permet un tri complexe, tel que le tri par « ordre » dans le « sous-ordre ».

usort($myArray, function($a, $b) {
    $retval = $a['order'] <=> $b['order'];
    if ($retval == 0) {
        $retval = $a['suborder'] <=> $b['suborder'];
        if ($retval == 0) {
            $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
        }
    }
    return $retval;
});
Copier après la connexion

Remarque : Si vous devez conserver des associations de clés, envisagez d'utiliser uasort() au lieu de usort().

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal