php数组得到N个不重复的数字之和

/**
 * 得到数组里面两个不重复的数字之和
 * @param $array  ['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5]
 * @param $count  2
 * @return array
 */
function getSumFromArray($array, $count = 2)
{
    if ($count > 2) {
        $totalArr = [];
        $left = $count - 1;
        $arrayCall = $array;
        $indexer = 0;
        foreach ($arrayCall as $key => $item) {
            $pre = $item;
            unset($arrayCall[$key]);
            if ($left >= 2 && count($arrayCall) > 1) {
                $arrays = getSumFromArray($arrayCall, $left);
                foreach ($arrays as $arrayK => $arrayItem) {
                    array_unshift($arrayItem['key'], $key);
                    array_unshift($arrayItem['value'], $item);
                    $totalArr[$indexer] = ['key' => $arrayItem['key'],'value' => $arrayItem['value'], 'amount' => bcadd($pre, $arrayItem['amount'], 2)];
                    $indexer++;
                }
            }
        }
        return $totalArr;
    } elseif ($count == 2) {
        $list = [];
        $listK = 0;
        foreach ($array as $column => $value) {
            unset($array[$column]);
            foreach ($array as $column1 => $value1) {
                $list[$listK] = ['key' => [$column, $column1], 'value' => [$value, $value1], 'amount' => bcadd($value, $value1, 2)];
                ++$listK;
            }
        }
        return $list;
    } else {
        return [];
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值