"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment transposer une structure de données en colonnes dans un format basé sur des lignes en PHP ?

Comment transposer une structure de données en colonnes dans un format basé sur des lignes en PHP ?

Publié le 2024-11-08
Parcourir:674

How to Transpose a Columnar Data Structure into Row-based Format in PHP?

Réorganisation des données en colonnes multidimensionnelles dans une structure basée sur des lignes

Étant donné un tableau associatif avec des données orientées colonnes, la tâche consiste à le transposer en un tableau multidimensionnel composé de lignes. Les données du tableau d'origine sont organisées par colonnes et l'objectif est de fusionner les valeurs de la même colonne en lignes.

Tableau d'origine :

$where = [
    'id' => [
        12,
        13,
        14
    ],
    'date' => [
        '1999-06-12',
        '2000-03-21',
        '2006-09-31'
    ]
];

Sortie souhaitée :

$comb = [
    [12, '1999-06-12'],
    [13, '2000-03-21'],
    [14, '2006-09-31']
];

Solution :

Un moyen efficace de réaliser cette restructuration des données consiste à parcourir les valeurs de chaque colonne à l'aide d'une boucle et à les combiner dans un tableau pour chacune. rangée. Voici un exemple :

$result = [];

foreach ($where['id'] as $key => $id) {
    $result[] = [$id, $where['date'][$key]];
}

Approche array_column() :

Une alternative élégante à la solution basée sur les boucles consiste à utiliser la fonction array_column(), qui extrait une colonne spécifique d'un fichier multidimensionnel. tableau.

$result = [];

foreach ($where['id'] as $key => $id) {
    $result[] = array_column($where, $key);
}

La fonction array_column() renvoie la colonne spécifiée sous forme de tableau, qui peut ensuite être combinée avec les valeurs de la ligne correspondante.

Sortie :

Les deux solutions produiront le résultat souhaité :

[
    [12, '1999-06-12'],
    [13, '2000-03-21'],
    [14, '2006-09-31']
]
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3