"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 agrupar linhas de matriz associativa por valor de coluna em PHP?

Como agrupar linhas de matriz associativa por valor de coluna em PHP?

Publicado em 2024-11-20
Navegar:331

How to Group Associative Array Rows by Column Value in PHP?

Agrupando ArrayRows Associativos por Valor de Coluna

Na programação, você pode encontrar situações em que precisa reorganizar os dados armazenados em matrizes associativas. Uma tarefa comum é agrupar linhas na matriz por um valor de coluna específico, preservando as chaves originais de primeiro nível.

Considere a seguinte matriz associativa de matrizes associativas conhecida como $old_arr:

[
    'a' => ['id' => 20, 'name' => 'chimpanzee'],
    'b' => ['id' => 40, 'name' => 'meeting'],
    'c' => ['id' => 20, 'name' => 'dynasty'],
    'd' => ['id' => 50, 'name' => 'chocolate'],
    'e' => ['id' => 10, 'name' => 'bananas'],
    'f' => ['id' => 50, 'name' => 'fantasy'],
    'g' => ['id' => 50, 'name' => 'football']
]

O objetivo é criar um novo array, $arr, onde as linhas são agrupadas com base no campo id. A matriz resultante deve ficar assim:

array
(
    10 => array
          (
            e => array ( id = 10, name = bananas )
          )
    20 => array
          (
            a => array ( id = 20, name = chimpanzee )
            c => array ( id = 20, name = dynasty )
          )
    40 => array
          (
            b => array ( id = 40, name = meeting )
          )
    50 => array
          (
            d => array ( id = 50, name = chocolate )
            f => array ( id = 50, name = fantasy )
            g => array ( id = 50, name = football )
          )
)

Para conseguir isso, você pode seguir estas etapas:

  1. Inicializar um array vazio $arr.
  2. Iterar sobre cada linha em $old_arr.
  3. Use o valor id como chave em $arr. Se a chave não existir, crie um novo array.
  4. Atribua a linha atual à chave correspondente em $arr.
  5. Classifique o array $arr por SORT_NUMERIC para garantir que as chaves estejam em ordem numérica.

O código PHP fornecido segue esta abordagem para gerar o resultado desejado:

$arr = array();

foreach ($old_arr as $key => $item) {
   $arr[$item['id']][$key] = $item;
}

ksort($arr, SORT_NUMERIC);
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