kullanmalıdır. baz içinde
Bu fonksiyon artışlarla
([dizideki elementlerin sayısı]) ve şeritler için karakterleri değiş tokuş etmek için strtr fonksiyonunu kullanır. Sonra
function everyCombination($array) {
$arrayCount = count($array);
$maxCombinations = pow($arrayCount, $arrayCount);
$returnArray = array();
$conversionArray = array();
if ($arrayCount >= 2 && $arrayCount <= 36)
{
foreach ($array as $key => $value) {
$conversionArray[base_convert($key, 10, $arrayCount)] = $value;
}
for ($i = 0; $i < $maxCombinations; $i++) {
$combination = base_convert($i, 10, $arrayCount);
$combination = str_pad($combination, $arrayCount, "0", STR_PAD_LEFT);
$returnArray[] = strtr($combination, $conversionArray);
}
return $returnArray;
}
echo 'Input array must have between 2 and 36 elements';
}
...
print_r(everyCombination(array('a', 'b', 'c', 'd')));
Bu aynı zamanda daha hızlı aşağıda özyinelemeli örnek göre anlamlı gibi görünüyor. Benim sunucuda
kullanma microtime() bu kod 0,072862863540649 saniye
özyinelemeli Aşağıdaki örnek ,39673089981079 saniye sürer çalışır.
% 138 daha hızlı!
Bu mükemmel çalışıyor - Teşekkürler! – user1926784
Bu, harika bir kod parçasıdır. +1 – Peter