PHP中大数组的所有可能组合

PHP中大数组的所有可能组合,php,arrays,combinations,Php,Arrays,Combinations,我花了2天时间创建一个函数,以获得所有可能的数组组合(无需重复订单): public function power\u set($array){ //通过添加空集进行初始化 $results=array(array()); foreach($array作为$element) foreach($结果为$组合) 数组推送($results,数组合并($combination,数组($element)); 返回$results; } $keys=数组(0=>1,1=>2,3=>3,21=>4,4=>5

我花了2天时间创建一个函数,以获得所有可能的数组组合(无需重复订单):

public function power\u set($array){
//通过添加空集进行初始化
$results=array(array());
foreach($array作为$element)
foreach($结果为$组合)
数组推送($results,数组合并($combination,数组($element));
返回$results;
}
$keys=数组(0=>1,1=>2,3=>3,21=>4,4=>5,5=>6,6=>7,7=>8,9=>10,10=>23,11=>34234,12=>34234,13=>34234,14=>45435,15=>32343,16=>35324,17=>4535345,18=>5645645,19=>234,20=>23324);
回显“”。打印(电源设置($keys),true)。“”;

对于7个元素的数组来说,它工作得很好,但比不工作的多。如何修复它?

John我认为这更像是运行代码的地方的问题。正如您的问题上的一些评论所指出的,您正在执行函数的php shell的工作内存有限

我使用长度为10的数组进行了测试,返回了1024个项目(正确的数量)


尝试在控制台中将其作为文件运行:
$php test\u file.php

您想要什么输出?您想要删除重复的吗?我想要所有可能的数组组合values@DanyalSandeelo顺便说一句:如果你发布了一个答案,OP会收到一个通知,所以不需要这个评论。为了您的信息和未来:@JohnMark您可以添加当前输出和预期输出吗。(可能使用更小的数组:D)我试试。但是试着用20或30个元素。这将是大量的重复,可能会耗尽内存。我正试图找到一种解决方法,也许是用数组块和用不同的调用划分循环作业。是的,对我来说大约是18个小时。。。你到底想在这里干什么?您应该重新格式化您的问题,以明确这是一个工作内存问题,而不是程序功能问题。
 public function power_set($array) {
    // initialize by adding the empty set
    $results = array(array( ));

    foreach ($array as $element)
        foreach ($results as $combination)
            array_push($results, array_merge($combination,array($element)));

    return $results;
}

$keys = array(0=>1,1=>2,3=>3,21=>4,4=>5,5=>6,6=>7,7=>8,9=>10,10=>23,11=>34234,12=>34234,13=>34234,14=>45435,15=>32343,16=>35324,17=>4535345,18=>5645645,19=>234,20=>23324);

 echo '<pre>'.print_r(power_set($keys),true).'</pre>';