"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 somar valores de chaves compartilhadas ao mesclar várias matrizes associativas?

Como somar valores de chaves compartilhadas ao mesclar várias matrizes associativas?

Publicado em 2024-11-04
Navegar:516

How to Sum Values of Shared Keys When Merging Multiple Associative Arrays?

Mesclando múltiplas matrizes associativas planas com soma de chaves compartilhadas

Ao combinar matrizes associativas com a função array_merge(), valores associados a chaves compartilhadas tendem a ser substituídos em vez de somados. Isso representa um desafio ao tentar adicionar os valores de chaves compartilhadas de vários arrays associativos.

Para superar esse obstáculo, pode-se adotar várias abordagens:

  • Foreach Iteration with Supressão de erros:
$sums = array();
foreach (array_keys($a1   $a2) as $key) {
    $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0)   (isset($a2[$key]) ? $a2[$key] : 0);
}
  • Mapeamento anônimo:
$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));
  • Solução Combinatória:
$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 personalizada para número arbitrário de matrizes:
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 abordagens fornecem soluções flexíveis para mesclar vários arrays associativos e somar os valores associados a chaves compartilhadas.

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