«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как суммировать значения общих ключей при слиянии ассоциативных массивов?

Как суммировать значения общих ключей при слиянии ассоциативных массивов?

Опубликовано 8 ноября 2024 г.
Просматривать:808

How to Sum Values for Shared Keys When Merging Associative Arrays?

Объединение массивов и суммирование значений общих ключей

Часто возникает необходимость объединить несколько ассоциативных массивов при объединении значений, связанных с общими ключами. По умолчанию слияние массивов перезаписывает конфликтующие значения, как показано в приведенном примере. Чтобы решить эту проблему, мы представляем ряд подходов, которые эффективно добавляют значения для общих ключей, сохраняя при этом уникальные ключи.

Использование промежуточных звеньев массива:

Один подход заключается в вычислении сумма значений вручную с использованием промежуточных элементов массива. Это включает перебор ключей объединенного массива и суммирование значений каждого ключа во входных массивах.

$sums = array();
foreach (array_keys($a1   $a2) as $key) {
    $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0)   (isset($a2[$key]) ? $a2[$key] : 0);
}

Сопоставление и сокращение:

Другой метод предполагает создание промежуточных массивов с нулевыми значениями для каждого уникального ключа. Затем они объединяются с исходными массивами и сопоставляются для вычисления сумм.

$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));

Обход массива:

Аналогично вы можете использовать обход массива для вычисления сумм общих ключей.

$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));

Функция многократного использования с динамическими параметрами:

Наконец, вы можете создать функцию многократного использования, которая принимает неограниченное количество массивов и вычисляет сумму значений для общих ключей.

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;
}

Эти решения предоставляют эффективные способы объединения нескольких ассоциативных массивов и расчета суммы значений общих ключей, обеспечивая гибкость и возможность повторного использования кода для различных сценариев.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3