Maison >développement back-end >tutoriel php >Comment regrouper des sous-tableaux par colonne et générer des valeurs séparées par des virgules à partir d'une autre colonne ?

Comment regrouper des sous-tableaux par colonne et générer des valeurs séparées par des virgules à partir d'une autre colonne ?

DDD
DDDoriginal
2024-11-02 18:11:02619parcourir

How to Group Subarrays by One Column and Generate Comma-Separated Values from Another Column?

Regroupement de sous-tableaux par colonne et génération de valeurs séparées par des virgules à partir d'une autre colonne

Introduction

Étant donné un tableau de sous-tableaux à deux colonnes, la tâche consiste à regrouper ces sous-tableaux par un colonne et créez de nouveaux sous-tableaux où les valeurs de l'autre colonne sont séparées par des virgules.

Structure originale :

$array = [
    ["444", "0081"],
    ["449", "0081"],
    ["451", "0081"],
    ["455", "2100"],
    ["469", "2100"]
];

Souhaité Structure :

array (
  0 => 
  array (
    0 => '444,449,451',
    1 => '0081',
  ),
  1 => 
  array (
    0 => '455,469',
    1 => '2100',
  ),
)

Solution

Une solution élégante peut être obtenue en parcourant le tableau d'origine et en collectant les valeurs dans un tableau temporaire basé sur le regroupement clé. Par la suite, le tableau temporaire est utilisé pour construire la structure souhaitée.

<code class="php">$data = []; 
$groups = [];

foreach($data as $item){
    if(!array_key_exists($item[1], $groups)){
        $groups[$item[1]] = [];
    }
    $groups[$item[1]][] = $item[0];
}

$structured = [];
foreach($groups as $group => $values){
    $structured[] = [implode(',', $values), $group];
}</code>

Cette approche garantit que les sous-tableaux sont regroupés correctement et que les valeurs de l'autre colonne sont combinées sous forme de chaînes séparées par des virgules. Il utilise des fonctions de tableau PHP de base et des boucles foreach pour obtenir le résultat souhaité.

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