gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:10:19 25 4
gpt4 key购买 nike

我在这里遇到一个技术问题,我有一个数组[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);
}

这个问题可能重复,但我找不到类似的例子,谢谢。

最佳答案

   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);

您已经从数组中进行组合,将帮助您:- PHP array combinations

关于php - 查找唯一(不重复)组合 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50387035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com