Pratique du tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes

WBOY
Libérer: 2024-04-29 21:12:02
original
790 Les gens l'ont consulté

Le tri des tableaux multidimensionnels peut être divisé en tri sur une seule colonne et en tri imbriqué. Le tri sur une seule colonne peut utiliser la fonction array_multisort() pour trier par colonnes ; le tri imbriqué nécessite une fonction récursive pour parcourir le tableau et trier. Les cas pratiques incluent le tri par nom de produit et le tri composé par volume de ventes et prix.

Pratique du tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes

Pratique de tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes

Introduction

En PHP, le tri des tableaux multidimensionnels est généralement une tâche complexe. Ce didacticiel vous guidera étape par étape dans la manière de trier des tableaux multidimensionnels en fonction de différents scénarios, du simple tri sur une seule colonne au tri imbriqué complexe.

Tri sur une seule colonne

Le tri par tableau multidimensionnel le plus simple consiste à trier en fonction d'une seule colonne. Vous pouvez utiliser la fonction array_multisort() :

$arr = [
    ['id' => 1, 'name' => 'John Doe'],
    ['id' => 3, 'name' => 'Jane Smith'],
    ['id' => 2, 'name' => 'Bob Johnson'],
];

array_multisort(array_column($arr, 'id'), SORT_ASC, $arr);

print_r($arr);
// 输出:
// Array
// (
//     [0] => Array
//         (
//             [id] => 1
//             [name] => John Doe
//         )
//     [1] => Array
//         (
//             [id] => 2
//             [name] => Bob Johnson
//         )
//     [2] => Array
//         (
//             [id] => 3
//             [name] => Jane Smith
//         )
// )
Copier après la connexion

Tri des tableaux imbriqués

Pour les tableaux imbriqués, vous devez utiliser une fonction récursive pour parcourir le tableau et le trier :

function sortNestedArray($arr, $col, $order) {
    if (!is_array($arr)) {
        return $arr;
    }

    uasort($arr, function($a, $b) use ($col, $order) {
        if ($a[$col] == $b[$col]) {
            return 0;
        }

        return ($a[$col] < $b[$col]) ? -1 : 1;
    });

    foreach ($arr as &$item) {
        if (is_array($item)) {
            $item = sortNestedArray($item, $col, $order);
        }
    }

    return $arr;
}
Copier après la connexion

Cas pratique

Cas 1 : Appuyez sur Trier le tableau imbriqué par nom de produit

$products = [
    ['id' => 1, 'name' => 'Apple', 'price' => 10],
    ['id' => 2, 'name' => 'Orange', 'price' => 15],
    ['id' => 3, 'name' => 'Banana', 'price' => 5],
];

$sortedProducts = sortNestedArray($products, 'name', SORT_ASC);

// ... 处理排序后的数组 ...
Copier après la connexion

Cas 2 : Trier le tableau imbriqué par volume de ventes et prix

$salesData = [
    ['product' => 'Apple', 'count' => 10, 'price' => 10],
    ['product' => 'Orange', 'count' => 15, 'price' => 15],
    ['product' => 'Banana', 'count' => 5, 'price' => 5],
];

usort($salesData, function($a, $b) {
    if ($a['count'] == $b['count']) {
        return ($a['price'] < $b['price']) ? -1 : 1;
    }

    return ($a['count'] < $b['count']) ? 1 : -1;
});

// ... 处理排序后的数据 ...
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!