首页 > 解决方案 > 以递归方式添加数组的相同元素

问题描述

你好我的目标是在一个数组中添加相同的值并删除重复的值然后以重复的方式将这些重复值的总和添加到同一个数组中,直到数组的所有元素都不同为止。我做了这个代码,但它只做了一次,如何重复这个动作几次直到好的结果?谢谢

function magic($arr)
{

    $result = array_filter(array_count_values($arr), function ($el) {
        return $el > 1;
    });
    foreach ($result as $k => $val) {
        $a[] = $k;
        $b[] = $k * $val;
    }

    $c[] = array_merge(array_diff($arr, $a), $b);

    return $c;
}


print_r(magic([5, 5, 8, 8, 10, 9,20, 7, 7]));//found:[10,9,20,10,16,14]  excpected:[9,40,14,16]( stape to find  result:[10,9,20,10,16,14]==>[20,9,20,16,14]==>[9,40,14,16])

标签: php

解决方案


您可以尝试使用关联数组广告添加相同的键

foreach ($result as $k => $val) {
    $a[$k] = (isset($a[$k]) ? a[$k] + $val : $val ;
}

推荐阅读