function getAllCombinations($numbers, $targetValue) { if (count($numbers) == 1) { if (reset($numbers) == $targetValue) { return array(reset($numbers)); } else { return array(); } } $options = array(); foreach ($numbers as $key => $number) { $newNumbers = $numbers; for ($i = 0; $i <= $key; $i++) { unset($newNumbers[$i]); } if ($targetValue - $number == 0) { $options[] = $number; } if ($targetValue - $number > 0) { $subOptions = getAllCombinations($newNumbers, $targetValue - $number); foreach ($subOptions as $subOption) { $options[] = $number . ',' . $subOption; } } } return $options; }
function getUniqueCombinations($numberOfChosenElements, $setSize) { getAllCombinations($numberOfChosenElements, $setSize); }