php - 是否可以动态设置for循环嵌套的层级

标签 php nested for-loop

我正在研究一种算法来获得像这样的排列

123
132
213
231
312
321

我正在使用嵌套的 foreach 循环来完成它。

for (..) {
    for(..) {
        for(..) {
           echo $i . $j . $k . "<br />";
        }   
    }
}

问题是嵌套循环的数量针对 3 点排列进行了优化。 我如何才能动态设置嵌套 for 循环的数量以生成 4 个字母或 5 个字母的排列?

最佳答案

是的,递归地做。

function permuteThis($items, $permutations = array()) {

    if(!is_array($items))
        $items = str_split($items);

    $numItems = sizeof($items);

    if($numItems > 0) {
        $cnt = $numItems - 1;
        for($i = $cnt; $i >= 0; --$i) {
            $newItems   = $items;
            $newPerms   = $permutations;
            list($tmp)  = array_splice($newItems, $i, 1);
            array_unshift($newPerms, $tmp);
            permuteThis($newItems, $newPerms);
        }
    } else {
        echo join('', $permutations) . "\n";
    }
}

$number = 123;
permuteThis($number);

关于php - 是否可以动态设置for循环嵌套的层级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2529508/

相关文章:

php - 如何让PHP安全地设置evercookie

Java DB和jasper报告嵌套选择

c - 中断 for 循环内的 if 语句

javascript - 表中没有可用数据,但显示了数据库中的数据

php - 如何使用 Zend Framework 2 在模型中设置 2 个表名

ruby - 为什么在尝试引用 Ruby 中的嵌套类时会出错?

java - 在android中的按钮组中嵌套按钮组?

c++ - 如何使用 C++ 标准库并行化普通 for 循环

关于 vector 和 for/while 循环的 C++ 新手

php - 如何获取数据库中特定行的相应 user_id(自动递增)值?