Maison  >  Article  >  développement back-end  >  Comment transformer un tableau 2D en tableau 3D en regroupant des éléments en fonction d'une valeur de colonne ?

Comment transformer un tableau 2D en tableau 3D en regroupant des éléments en fonction d'une valeur de colonne ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 20:05:31979parcourir

How to Transform a 2D Array into a 3D Array by Grouping Elements Based on a Column Value?

Regroupement des données d'un tableau 2D en fonction de la valeur de la colonne pour créer un tableau 3D

En programmation, vous pouvez rencontrer le besoin d'organiser les données dans des tableaux multidimensionnels. Pour gérer efficacement des données complexes, il devient indispensable de regrouper les éléments selon des critères précis. Cet article aborde le défi spécifique consistant à regrouper un tableau 2D en fonction des valeurs d'une colonne spécifique, en le transformant en un tableau 3D pour une visualisation et une manipulation améliorées.

Considérez le tableau multidimensionnel suivant contenant des informations client :

<code class="php">$data = [
    ['cust' => 'XT8900', 'type' => 'standard', 'level' => 1],
    ['cust' => 'XT8944', 'type' => 'standard', 'level' => 1],
    ['cust' => 'XT8922', 'type' => 'premier', 'level' => 3],
    ['cust' => 'XT8816', 'type' => 'premier', 'level' => 3],
    ['cust' => 'XT7434', 'type' => 'standard', 'level' => 7],
];</code>

L'objectif est de regrouper ces enregistrements clients en fonction de la colonne « niveau » et de créer un tableau 3D où chaque niveau contient un tableau d'informations client. Le résultat souhaité devrait ressembler à ceci :

<code class="php">$result = [
    1 => [
        ['cust' => 'XT8900', 'type' => 'standard'],
        ['cust' => 'XT8944', 'type' => 'standard'],
    ],
    3 => [
        ['cust' => 'XT8922', 'type' => 'premier'],
        ['cust' => 'XT8816', 'type' => 'premier'],
    ],
    7 => [
        ['cust' => 'XT7434', 'type' => 'standard'],
    ],
];</code>

Il existe plusieurs approches pour y parvenir, mais explorons une solution efficace :

  1. Tri des données :
    Commencez par trier le tableau 2D par la colonne « niveau ». Cela peut être fait en utilisant la fonction usort() pour comparer les valeurs de « niveau » de chaque élément.
  2. Regroupement des données triées :
    Maintenant, parcourez les données triées data et créer un tableau temporaire. Pour chaque entrée, récupérez la valeur « niveau » comme clé et stockez l'intégralité de l'entrée comme valeur. Cela regroupera efficacement les enregistrements client par niveau.

    <code class="php">foreach ($data as $key => &$entry) {
        $level_arr[$entry['level']][$key] = $entry;
    }</code>

Le $level_arr résultant aura la structure souhaitée, chaque niveau contenant un tableau d'informations client.

  1. Conversion en un tableau 3D :
    Maintenant, convertissez le $level_arr temporaire en tableau 3D cible. Cela implique de définir les clés du tableau 3D sur les valeurs de niveau et les valeurs sur les tableaux client correspondants à partir de $level_arr.

    <code class="php">$result = [];
    foreach ($level_arr as $level => $customer_data) {
        $result[$level] = array_values($customer_data);
    }</code>
  2. Résultat final :
    Le La variable $result est désormais le tableau 3D avec les enregistrements clients regroupés par la colonne « niveau ».

En suivant ces étapes, vous pouvez regrouper efficacement les données dans un tableau 2D en utilisant une valeur de colonne spécifique et construire un Tableau 3D pour une manipulation et une visualisation améliorées des données. Cette approche offre flexibilité et efficacité lorsqu'il s'agit de structures de données complexes.

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