Combinar arrays associativos com diferentes conjuntos de chaves para criar um array unificado pode ser um desafio. Esta questão explora um método para conseguir isso, e a saída desejada é uma matriz onde as chaves são mescladas e as colunas ausentes são preenchidas com um valor padrão.
Para conseguir isso, foi sugerido empregar a função array_merge em conjunto com um conjunto de chaves cuidadosamente elaborado:
$keys = array(); foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) { $keys[$key] = ''; }
Este loop itera sobre todos os elementos nas matrizes de entrada, extraindo as chaves exclusivas e atribuindo-lhes valores vazios. O array $keys resultante contém todas as chaves possíveis que podem existir no array final mesclado.
Em seguida, cada array de entrada é mesclado com o array $keys:
$data = array(); foreach($d as $values) { $data[] = array_merge($keys, $values); }
Esta etapa garante que cada linha na matriz final tenha todas as chaves possíveis, com quaisquer valores ausentes sendo preenchidos com uma string vazia. O array $data resultante é o array mesclado e concluído desejado.
Alternativamente, um array de par de chaves pode ser criado e mesclado com cada array de entrada:
$keys = array_keys(call_user_func_array('array_merge', $d)); $key_pair = array_combine($keys, array_fill(0, count($keys), null)); $values = array_map(function($e) use ($key_pair) { return array_merge($key_pair, $e); }, $d);
Este método essencialmente cria um mapa de todas as chaves possíveis para valores nulos. Cada matriz de entrada é então mesclada com a matriz $key_pair, obtendo o mesmo resultado da abordagem anterior.
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