我整天都在研究 PHP 数组排列/组合问题.. 仍然无法弄清楚:/
如果我有一个像这样的数组:
20 //key being 0
20 //key being 1
22 //key being 2
24 //key being 3
我需要这样的组合:
20, 20, 22 //keys being 0 1 2
20, 20, 24 //keys being 0 1 3
20, 22, 24 //keys being 0 2 3
20, 22, 24 //keys being 1 2 3
我目前拥有的代码给了我:
20, 22, 24
因为它不想重复 20 次……但这就是我所需要的!
这是我的代码。直接从php递归得到字符串的所有可能
function getCombinations($base,$n){
$baselen = count($base);
if($baselen == 0){
return;
}
if($n == 1){
$return = array();
foreach($base as $b){
$return[] = array($b);
}
return $return;
}else{
//get one level lower combinations
$oneLevelLower = getCombinations($base,$n-1);
//for every one level lower combinations add one element to them that the last element of a combination is preceeded by the element which follows it in base array if there is none, does not add
$newCombs = array();
foreach($oneLevelLower as $oll){
$lastEl = $oll[$n-2];
$found = false;
foreach($base as $key => $b){
if($b == $lastEl){
$found = true;
continue;
//last element found
}
if($found == true){
//add to combinations with last element
if($key < $baselen){
$tmp = $oll;
$newCombination = array_slice($tmp,0);
$newCombination[]=$b;
$newCombs[] = array_slice($newCombination,0);
}
}
}
}
}
return $newCombs;
}
我一直在玩这($b == $lastEl)
条线,没有运气
================
我已经看过的问题与创建内存不足错误的问题不同!:
- 如何在没有顺序重复的情况下获得 PHP 中的所有排列?
- 排列 - 所有可能的数字集
- PHP 中的组合、配置和排列
- PHP数组组合
- 获取 PHP 数组的所有排列?
- PHP:如何获得一维数组的所有可能组合?
- 从此数组中仅选择唯一的数组值
- 获取 PHP 数组的所有排列?
- PHP:如何获得一维数组的所有可能组合?
- 从此数组中仅选择唯一的数组值
- 如何在没有顺序重复的情况下获得 PHP 中的所有排列?
- 从 n 返回 k 个元素的所有组合的算法
- 在数组中查找总和等于给定数字的元素的组合和
- PHP 中的组合、配置和排列
- PHP数组组合
- php递归获取字符串的所有可能性
- 如何在 PHP 中返回数组的排列?
- 排列 - 所有可能的数字集
- 使用 MySQL 的 PHP 中的子集和问题
- 从过滤掉任何重复对的数组中查找唯一的值组合
- 查找字符串的所有唯一排列而不生成重复项
- 生成所有唯一排列
- 恰好k个整数的子集总和?
我已经用 12 个项目的数组尝试了其中一些算法,但最终内存不足。然而,我目前使用的算法并没有给我一个内存不足的错误....但是..我需要那些重复的!