PHP найти все (несколько) уникальные комбинации массива
Я весь день смотрел на вопросы по перестановке / комбинированию PHP-массивов ... и до сих пор не могу понять: /
Если у меня есть массив, как:
20 //key being 0
20 //key being 1
22 //key being 2
24 //key being 3
Мне нужны комбинации, такие как:
20, 20, 22 //keys being 0 1 2
20, 20, 24 //keys being 0 1 3
20, 22, 24 //keys being 0 2 3
20, 22, 24 //keys being 1 2 3
Код, который у меня сейчас есть, дает мне:
20, 22, 24
потому что не хочет повторять 20 ... но это то, что мне нужно!
Вот код, который у меня есть. это прямо изPHP рекурсия, чтобы получить все возможности строк
function getCombinations($base,$n){
$baselen = count($base);
if($baselen == 0){
return;
}
if($n == 1){
$return = array();
foreach($base as $b){
$return[] = array($b);
}
return $return;
}else{
//get one level lower combinations
$oneLevelLower = getCombinations($base,$n-1);
//for every one level lower combinations add one element to them that the last element of a combination is preceeded by the element which follows it in base array if there is none, does not add
$newCombs = array();
foreach($oneLevelLower as $oll){
$lastEl = $oll[$n-2];
$found = false;
foreach($base as $key => $b){
if($b == $lastEl){
$found = true;
continue;
//last element found
}
if($found == true){
//add to combinations with last element
if($key < $baselen){
$tmp = $oll;
$newCombination = array_slice($tmp,0);
$newCombination[]=$b;
$newCombs[] = array_slice($newCombination,0);
}
}
}
}
}
return $newCombs;
}
Я играл с($b == $lastEl)
линия, без удачи
===============
Вопросы, на которые я уже посмотрел, и не совпадают с тем, что привело к ошибке нехватки памяти !:
Как я могу получить все перестановки в PHP без последовательных дубликатов?Перестановки - все возможные наборы чиселКомбинации, диспозиции и перестановки в PHPКомбинации массивов PHPПолучить все перестановки массива PHP?PHP: Как получить все возможные комбинации 1D массива?Выбрать только уникальные значения массива из этого массиваПолучить все перестановки массива PHP?PHP: Как получить все возможные комбинации 1D массива?Выбрать только уникальные значения массива из этого массиваКак я могу получить все перестановки в PHP без последовательных дубликатов?Алгоритм возврата всех комбинаций k элементов из nНайти комбинацию (и) суммы элемента (ов) в массиве, сумма которого равна заданному числуКомбинации, диспозиции и перестановки в PHPКомбинации массивов PHPPHP рекурсия, чтобы получить все возможности строкКак вернуть перестановки массива в PHP?Перестановки - все возможные наборы чиселПроблема суммы подмножеств в PHP с MySQLНайти уникальные комбинации значений из массивов, отфильтровывая любые дублирующиеся парыНахождение всех уникальных перестановок строки без генерации дубликатовГенерация всех уникальных перестановокСумма подмножества для ровно k целых чисел?Я попробовал некоторые из этих алгоритмов с массивом из 12 элементов, и в итоге мне не хватило памяти. Однако алгоритм, который я сейчас использую, не дает мне ошибки нехватки памяти ... НО ... Мне нужны эти дубликаты!