"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como transpor uma estrutura de dados colunar para um formato baseado em linhas em PHP?

Como transpor uma estrutura de dados colunar para um formato baseado em linhas em PHP?

Publicado em 2024-11-08
Navegar:509

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

Reordenando dados colunares multidimensionais em estrutura baseada em linhas

Dado um array associativo com dados orientados a colunas, a tarefa é transpô-los para uma matriz multidimensional que consiste em linhas. Os dados na matriz original são organizados por colunas e o objetivo é mesclar os valores da mesma coluna em linhas.

Array original:

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

Saída desejada:

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

Solução:

Uma maneira eficaz de conseguir essa reestruturação de dados é iterar pelos valores de cada coluna usando um loop e combiná-los em uma matriz para cada linha. Aqui está um exemplo:

$result = [];

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

array_column() Abordagem:

Uma alternativa elegante para a solução baseada em loop é usar a função array_column(), que extrai uma coluna específica de um multidimensional matriz.

$result = [];

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

A função array_column() retorna a coluna especificada como uma matriz, que pode então ser combinada com os valores da linha correspondente.

Saída:

Ambas as soluções produzirão o resultado desejado:

[
    [12, '1999-06-12'],
    [13, '2000-03-21'],
    [14, '2006-09-31']
]
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3