php代码实现n个数字中的m大,php 从m个数中取n个数组合,超出内存怎么办?

下面是我网上找到的代码:

function getCombinationToString($arr,$m)

{

$result = array();

if ($m ==1)

{

return $arr;

}

if ($m == count($arr))

{

$result[] = implode(',' , $arr);

return $result;

}

$temp_firstelement = $arr[0];

unset($arr[0]);

$arr = array_values($arr);

$temp_list1 = getCombinationToString($arr, ($m-1));

foreach ($temp_list1 as $s)

{

$s = $temp_firstelement.','.$s;

$result[] = $s;

}

unset($temp_list1);

$temp_list2 = getCombinationToString($arr, $m);

foreach ($temp_list2 as $s)

{

$result[] = $s;

}

unset($temp_list2);

return $result;

}

$arr=['a','b','c','d','e','f'];

getCombinationToString($arr,3);

输出结果:

Array

(

[0] => a,b,c

[1] => a,b,d

[2] => a,b,e

[3] => a,b,f

[4] => a,c,d

[5] => a,c,e

[6] => a,c,f

[7] => a,d,e

[8] => a,d,f

[9] => a,e,f

[10] => b,c,d

[11] => b,c,e

[12] => b,c,f

[13] => b,d,e

[14] => b,d,f

[15] => b,e,f

[16] => c,d,e

[17] => c,d,f

[18] => c,e,f

[19] => d,e,f

)

现在我的$arr有几百个元素,执行后超出内存,请问该怎么办?有没有人能帮忙改进下组合的函数,我这方面很弱,不知道怎么做?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值