私はヴィッキーの答えを使用し、いくつかの変更を加えました。これはあなたが望むように機能すると思います
function everyCombination($array) {
$tempcount = 3; //lenght of the combinations you want
$arrayCount = count($array);
$maxCombinations = pow($arrayCount, $arrayCount);
$returnArray = array();
$conversionArray = array();
foreach ($array as $key => $value) {
$conversionArray[base_convert($key, 10, $arrayCount)] = $value;
}
for ($i = 0; $i < $maxCombinations; $i++) {
$flag = 1;
$combination = base_convert($i, 10, $arrayCount);
$combination = str_pad($combination, $tempcount, "0", STR_PAD_LEFT);
$temp = strtr($combination, $conversionArray);
for($j = 0; $j < $tempcount-1; $j++){
if($temp[$j] >= $temp[$j+1] || $flag == 0)
$flag = 0;
else
$flag = 1;
}
if($flag && strlen($temp) == $tempcount)
$returnArray[] = $temp;
}
return $returnArray;
}
print_r(everyCombination(array(1,2,3,4)));