将Array值推送到其他每个Array值?

时间:2011-11-22 06:07:15

标签: php arrays

我不太确定如何解释我的问题。

我有像这样的数组

$foo = array{"one", "two", "three"}

我需要将每个值推送到其他值。

需要这样的结果......

$new = array{"one two three", "one two", "one three", "two three", "one", "two", "three"}

是否可以做出那样的结果?

我希望有人可以帮助我。

之前感谢:)

2 个答案:

答案 0 :(得分:1)

看起来你正在寻找一个powerset,这里是算法的链接:http://en.wikipedia.org/wiki/Power_set

答案 1 :(得分:1)

这是对你的问题的一个相当简单的尝试。

<?php
function perms($array) {
    $res = array( array() );
    foreach ($array as $val) {
        $n = count($res);
        for($i=0; $i < $n; $i++) {
            $res[] = array_merge( array($val), $res[$i] );
        }
    }
    return $res;
}
$array = array("one", "two", "three");
print_r( perms($array) );

结果可以在Ideone找到。输出是多维的形式,但我相信你可以弄清楚如何压扁它。