在php中生成简单组合

时间:2014-10-16 04:42:46

标签: php arrays

我们有3所学校分校:

xschool atlanta 
xschool ortigas
xschool bagio

我将生成一个简单的组合。
如何在php语言中生成下面的数组

arr1[0]=> xschool atlanta
arr1[1]=>xschool ortigas
arr1[2]=>xschool bagio
arr1[3]=>xschool atlanta,xschool ortigas
arr1[4]=>xschool atlanta,xschool bagio
arr1[5]=>xschool ortigas,xschool bagio
arr1[6]=>xschool atlanta,xschool ortigas,xschool bagio

我无法在脑海中设置算法......

为什么我需要这个算法?有时我们的兼职教师可以在不同的一天在两个分支机构工作 因此,当我们将教师添加到我们的系统时,组合框应该向我们显示上面的列表(数组)。

2 个答案:

答案 0 :(得分:2)

我可能会为你提供方向(伪代码),这只是解决这个问题的众多方法之一。你必须实现自己的代码;)。

从000生成二进制数列表 - > 111 每个数字匹配1个排列。

000 
001 => xschool atlanta
010 => xschool ortigas
100 => xschool bagio
110 => xschool atlanta,xschool ortigas
101 => xschool atlanta,xschool bagio
011 => xschool ortigas,xschool bagio
111 => xschool atlanta,xschool ortigas,xschool bagio

你要完成的其余部分。玩得开心编码;)

答案 1 :(得分:-1)

是, 我解决了我的问题。代码如下:

function combine_set_well($array) {
    // initialize by adding the empty set
    $results = array(array( ));

    foreach ($array as $element)
        foreach ($results as $combination)
            array_push($results, array_merge(array($element), $combination));

    return $results;
}

$set = array('xschool atlanta', 'xschool ortegas', 'xschool bagio');
$ayarla=combine_set_well($set);
asort($ayarla);
foreach ($ayarla as $combination) {
    print join(",", $combination) . "<br/>";
}