Maison > développement back-end > tutoriel php > Comment trier un tableau PHP par la valeur « optionNumber » d'un sous-tableau ?

Comment trier un tableau PHP par la valeur « optionNumber » d'un sous-tableau ?

Susan Sarandon
Libérer: 2024-12-08 02:32:09
original
863 Les gens l'ont consulté

How to Sort a PHP Array by a Subarray's

PHP Trier les tableaux par valeur de sous-tableau : un guide complet

En PHP, les tableaux sont une structure de données indispensable pour organiser et manipuler les données. Parfois, il devient nécessaire de trier ces tableaux en fonction des valeurs contenues dans leurs sous-tableaux. Cet article explore les méthodes les plus efficaces pour trier les tableaux par valeurs de sous-tableau, en se concentrant spécifiquement sur le champ optionNumber.

Pour commencer, considérons l'exemple suivant :

$array = [
    [
        "configuration_id" => 10,
        "id" => 1,
        "optionNumber" => 3,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 9,
        "id" => 1,
        "optionNumber" => 2,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 8,
        "id" => 1,
        "optionNumber" => 1,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ]
];
Copier après la connexion

L'objectif est d'organiser le $array dans un ordre incrémentiel basé sur l'optionNumber, ce qui donne le tableau trié suivant :

$sortedArray = [
    [
        "configuration_id" => 8,
        "id" => 1,
        "optionNumber" => 1,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 9,
        "id" => 1,
        "optionNumber" => 2,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 10,
        "id" => 1,
        "optionNumber" => 3,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ]
];
Copier après la connexion

Pour réaliser ce tri, le PHP La fonction usort s’avère être un outil efficace. Voici comment cela peut être implémenté :

function cmp_by_optionNumber($a, $b) {
  return $a["optionNumber"] - $b["optionNumber"];
}

usort($array, "cmp_by_optionNumber");
Copier après la connexion

Dans cette méthode, cmp_by_optionNumber est une fonction de comparaison définie par l'utilisateur qui compare les valeurs optionNumber des deux tableaux d'entrée. La fonction renvoie une valeur négative si l'optionNumber du premier tableau est inférieur au second, un zéro s'ils sont égaux et une valeur positive si l'optionNumber du premier tableau est supérieur au second. En utilisant cette fonction de comparaison, usort trie efficacement le $array par ordre croissant du champ optionNumber.

Pour les versions PHP 5.3 et supérieures, il est recommandé d'utiliser des fonctions anonymes pour une approche plus propre :

usort($array, function ($a, $b) {
    return $a['optionNumber'] - $b['optionNumber'];
});
Copier après la connexion

Cependant, il est important de noter que si les valeurs optionNumber sont des chaînes, la soustraction dans les fonctions de comparaison peut conduire à des résultats incorrects. Dans de tels cas, envisagez d'utiliser l'approche suivante :

usort($array, function ($a, $b) {
    return strcmp($a['optionNumber'], $b['optionNumber']);
});
Copier après la connexion

Enfin, dans les versions PHP 7.0 et ultérieures, l'opérateur du vaisseau spatial <=> peut être exploité à la place de la soustraction pour éviter les problèmes de débordement/troncation, en particulier lorsqu'il s'agit de grands nombres :

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

En implémentant l'une des méthodes décrites, vous pouvez trier efficacement les tableaux PHP en fonction des valeurs des sous-tableaux, en garantissant que vos données sont organisées de manière significative et pratique.

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