Mesclando matrizes e somando valores-chave compartilhados
Muitas vezes surge a necessidade de mesclar várias matrizes associativas enquanto combina os valores associados às chaves compartilhadas. Por padrão, a mesclagem de arrays substitui valores conflitantes, conforme visto no exemplo fornecido. Para resolver isso, apresentamos uma série de abordagens que efetivamente adicionam valores para chaves compartilhadas enquanto preservam chaves exclusivas.
Usando intermediários de matriz:
Uma abordagem é calcular o soma dos valores manualmente usando intermediários de array. Isso envolve iterar pelas chaves da matriz mesclada e somar os valores de cada chave nas matrizes de entrada.
$sums = array(); foreach (array_keys($a1 $a2) as $key) { $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0) (isset($a2[$key]) ? $a2[$key] : 0); }
Mapeamento e redução:
Outro método envolve a criação de matrizes intermediárias com valores zero para cada chave exclusiva. Eles são então mesclados com os arrays originais e mapeados para calcular as somas.
$keys = array_fill_keys(array_keys($a1 $a2), 0); $sums = array_map(function ($a1, $a2) { return $a1 $a2; }, array_merge($keys, $a1), array_merge($keys, $a2));
Caminhada de array:
Da mesma forma, você pode usar caminhada de array para calcular as somas de ações compartilhadas chaves.
$sums = array_fill_keys(array_keys($a1 $a2), 0); array_walk($sums, function (&$value, $key, $arrs) { $value = @($arrs[0][$key] $arrs[1][$key]); }, array($a1, $a2));
Função reutilizável com parâmetros dinâmicos:
Finalmente, você pode criar uma função reutilizável que aceita um número ilimitado de arrays e calcula a soma dos valores para chaves compartilhadas.
function array_sum_identical_keys() { $arrays = func_get_args(); $keys = array_keys(array_reduce($arrays, function ($keys, $arr) { return $keys $arr; }, array())); $sums = array(); foreach ($keys as $key) { $sums[$key] = array_reduce($arrays, function ($sum, $arr) use ($key) { return $sum @$arr[$key]; }); } return $sums; }
Essas soluções fornecem maneiras eficientes de mesclar vários arrays associativos e calcular a soma de valores para chaves compartilhadas, oferecendo flexibilidade e capacidade de reutilização de código para vários cenários.
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