开发者

Create array with all the permutations of another array of natural numbers with PHP

开发者 https://www.devze.com 2023-04-06 07:31 出处:网络
I\'ve created a开发者_C百科n array with $my_array = range(1,3) and I\'d like to have an array created containing all the permutations of this one (1,2,3 1,3,2 2,1,3 ..).

I've created a开发者_C百科n array with $my_array = range(1,3) and I'd like to have an array created containing all the permutations of this one (1,2,3 1,3,2 2,1,3 ..).

The second number in the range function can change (it could be 4, 5, 7, 50 instead of 3).


Code from Christer's blog o' fun :

function permute($str) {
    /* If we only have a single character, return it */
    if (strlen($str) < 2) {
        return array($str);
    }

    /* Initialize the return value */
    $permutations = array();

    /* Copy the string except for the first character */
    $tail = substr($str, 1);

    /* Loop through the permutations of the substring created above */
    foreach (permute($tail) as $permutation) {
        /* Get the length of the current permutation */
        $length = strlen($permutation);

        /* Loop through the permutation and insert the first character of the original
        string between the two parts and store it in the result array */
        for ($i = 0; $i <= $length; $i++) {
            $permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i);
        }
    }

    /* Return the result */
    return $permutations;
}

$array_of_natural_numbers = range(1, 5);
$string_of_natural_numbers = implode("",$array_of_natural_numbers);
$permutations = permute($string_of_natural_numbers);
0

精彩评论

暂无评论...
验证码 换一张
取 消