PHP Znajdź wszystkie (nieco) unikalne kombinacje tablicy

Przez cały dzień patrzyłem na pytania dotyczące permutacji / kombinacji tablicy PHP. Nadal nie potrafię tego zrozumieć: /

Jeśli mam tablicę taką jak:

20 //key being 0    
20 //key being 1    
22 //key being 2    
24 //key being 3

Potrzebuję kombinacji takich jak:

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

Kod, który aktualnie mam, daje mi:

20, 22, 24

ponieważ nie chce powtarzać 20 ... ale tego właśnie potrzebuję!

Oto kod, który mam. jest bezpośrednio zRekursja php, aby uzyskać wszystkie możliwości ciągów

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;


}

Bawiłem się z($b == $lastEl) linia, bez powodzenia

===============

Pytania, na które już patrzyłem i nie są takie same LUB, które spowodowały błąd pamięci !:

Jak mogę uzyskać wszystkie permutacje w PHP bez kolejnych duplikatów?Permutacje - wszystkie możliwe zestawy liczbKombinacje, dyspozycje i permutacje w PHPKombinacje tablic PHPUzyskaj wszystkie permutacje tablicy PHP?PHP: Jak uzyskać wszystkie możliwe kombinacje macierzy 1D?Wybierz tylko unikalne wartości tablicy z tej tablicyUzyskaj wszystkie permutacje tablicy PHP?PHP: Jak uzyskać wszystkie możliwe kombinacje macierzy 1D?Wybierz tylko unikalne wartości tablicy z tej tablicyJak mogę uzyskać wszystkie permutacje w PHP bez kolejnych duplikatów?Algorytm zwracający wszystkie kombinacje k elementów z nZnajdź kombinację (y) sumy elementów w tablicy, których suma jest równa podanej liczbieKombinacje, dyspozycje i permutacje w PHPKombinacje tablic PHPRekursja php, aby uzyskać wszystkie możliwości ciągówJak zwrócić permutacje tablicy w PHP?Permutacje - wszystkie możliwe zestawy liczbProblem sumy podzbiorów w PHP z MySQLZnajdź unikalne kombinacje wartości z tablic filtrujących dowolne pary duplikatówZnajdowanie wszystkich unikalnych permutacji łańcucha bez generowania duplikatówWygeneruj wszystkie unikalne permutacjeSuma podzbioru dla dokładnie k liczb całkowitych?

Wypróbowałem niektóre z tych algorytmów z tablicą 12 elementów i skończyło się na braku pamięci. Jednak algorytm, którego obecnie używam, nie daje mi błędu braku pamięci .... ALE .. Potrzebuję tych duplikatów!

questionAnswers(6)

yourAnswerToTheQuestion