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 элементов, и в итоге мне не хватило памяти. Однако алгоритм, который я сейчас использую, не дает мне ошибки нехватки памяти ... НО ... Мне нужны эти дубликаты!

Ответы на вопрос(6)

Ваш ответ на вопрос