Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找唯一(不重复)的php组合_Php_Algorithm_Combinations - Fatal编程技术网

查找唯一(不重复)的php组合

查找唯一(不重复)的php组合,php,algorithm,combinations,Php,Algorithm,Combinations,我在这里面临一个技术问题,我有一个数组[每天,每种大小,每种类型],我想找到所有项目的组合,而不重复元素,结果应该是 [PER_DAY] [PER_SIZE] [PER_TYPE] [PER_DAY, PER_SIZE] [PER_DAY, PER_TYPE] [PER_SIZE, PER_TYPE] [PER_DAY, PER_SIZE, PER_TYPE] 此代码重复相同的值,因此结果太多 $arr = ['PER_DAY', 'PE

我在这里面临一个技术问题,我有一个数组
[每天,每种大小,每种类型]
,我想找到所有项目的组合,而不重复元素,结果应该是

    [PER_DAY]
    [PER_SIZE]
    [PER_TYPE]
    [PER_DAY, PER_SIZE]
    [PER_DAY, PER_TYPE]
    [PER_SIZE, PER_TYPE]
    [PER_DAY, PER_SIZE, PER_TYPE]
此代码重复相同的值,因此结果太多

$arr = ['PER_DAY', 'PER_SIZE', 'PER_TYPE'];
$result = [];

function combinations($arr, $level, &$result, $curr=[]) {
    for($i = 0; $i < count($arr); $i++) {
        $new = array_merge($curr, array($arr[$i]));
        if($level == 1) {
            sort($new);
            if (!in_array($new, $result)) {
                $result[] = $new;          
            }
        } else {
            combinations($arr, $level - 1, $result, $new);
        }
    }
}
for ($i = 0; $i<count($arr); $i++) {
    combinations($arr, $i+1, $result);
}
$arr=[“每一天”、“每一大小”、“每一类型”];
$result=[];
函数组合($arr、$level、&$result、$curr=[])){
对于($i=0;$i功能pc\u阵列\u电源\u集($array){
//通过添加空集进行初始化
$results=array(array());
foreach($array作为$element)
foreach($结果为$组合)
array_push($results,array_merge(array($element),$combination));
返回数组_过滤器($results);
}
$set=[“每一天”、“每一大小”、“每一类型”];
$power\u set=pc\u阵列\u power\u set($set);
回声';
打印(电源组);

您已经从数组中进行了组合,将对您有所帮助:-

但您已经尝试自己编写了代码?可能重复了为什么我们需要定义$max,在我的情况下,它的长度应该是$in,对吗?您得到答案了吗??
   function pc_array_power_set($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 array_filter($results);
}
    $set = ['PER_DAY', 'PER_SIZE', 'PER_TYPE'];
    $power_set = pc_array_power_set($set);
    echo '<pre>';
    print_r($power_set);