【发布时间】:2018-05-17 08:43:38
【问题描述】:
我在这里遇到一个技术问题,我有一个数组[PER_DAY, PER_SIZE, PER_TYPE],我想在不重复元素的情况下找到所有项目的组合,结果应该是
[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);
}
这个问题可能重复,但我找不到类似的例子,谢谢。
【问题讨论】:
-
但是您尝试过自己编写代码?
标签: php algorithm combinations