php – 从混合数组中获取所有可能的结果

我到处寻找这个,但无法完全找到它. (我的PHP和数学技能让我失望了…)
我有一个包含例如三个字符串的数组(也可能更多!)(例如:“a”,“b”,“c”).现在我想创建一个返回所有可能性的函数.我到处寻找并找到了一些很好的函数,他们以一切可能的方式移动了数组,但是他们并没有逐个删除一个值.所以他们有:

abc acb bac bca cab cba

这很好,但我需要一个将它带到一个新的水平的功能:

abc acb bac bca cab cba ac ca ab ba bc ba a b c

而这无论多少价值(让我们说最多10).
整个晚上我一直在努力解决这个问题,有人能让我摆脱困境并为我解决这个谜题吗?或者给出一些建议.
谢谢

最佳答案
与往常一样,以自己的方式解决问题会更有趣.您可以更轻松地修改代码以满足您的特殊需求,因为您知道自己在做什么:)
请参阅下面的测试脚本:

<?

$a = array("a", "b", "c");

function getAll($prefix, $remaining)
{
    echo $prefix."\n";

    if (count($remaining) == 0) return;
    if (count($remaining) == 1)
    {                                                                
        echo $prefix.$remaining[0]."\n";
        return;                                                      
    }                                                                

    for ($i = 0; $i < count($remaining); $i++)                       
    {                                                                
        $t = $remaining;                                             
        unset($t[$i]);                                               
        $t = array_values($t);                                       
        getAll($prefix.$remaining[$i], $t);              
    }                                                                                                       
}                                                        
echo "<pre>\n";                                          
getAll('', $a);                                          
echo "</pre>\n";                                         

?>

我只是回应了预期的输出,你可以添加一个结果数组,但那是你的一部分:)

输出:

[] //empty value is included, but blank lines won't show up here, so I wrote []
a
ab
abc
ac
acb
b
ba
bac
bc
bca
c
ca
cab
cb
cba

转载注明原文:php – 从混合数组中获取所有可能的结果 - 代码日志