Все возможные комбинации для БОЛЬШОГО массива в переполнении стека

Я пытаюсь в течение 2 дней создать функцию, чтобы получить все возможные комбинации массивов (без повторений заказов):

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

Он отлично работает для массива из 7 элементов, но не только. Как я могу это исправить?

1

Решение

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

Я протестировал с массивом длиной 10, и было возвращено 1024 элемента (правильное количество).

Попробуйте запустить его как файл в вашей консоли: $ php test_file.php

0

Другие решения

Других решений пока нет …