Я пытаюсь в течение 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 элементов, но не только. Как я могу это исправить?
Джон, я думаю, это больше связано с тем, где вы запускаете код. Как показывают некоторые комментарии к вашему вопросу, оболочка php, в которой вы выполняете функцию, имеет ограниченную рабочую память.
Я протестировал с массивом длиной 10, и было возвращено 1024 элемента (правильное количество).
Попробуйте запустить его как файл в вашей консоли: $ php test_file.php
Других решений пока нет …