-1
我需要帮助循环,通过一个简单的数组,找到它的元素这样所有可能的组合的所有可能的组合:迭代通过一个数组来找到重复
array('a', 'b', 'c');
预期的结果是:
array(
0=>array('a', 'a', 'a'),
1=> array('a', 'a', 'b')
);
我完全失败,任何帮助或指针非常感谢!
这是我到目前为止。
$array = array('red', 'blue', 'green', 'white');
$count = count($array);
$current = array_fill(0, $count, $array[0]);
$last = array_fill(0, $count, end($array));
$output = array();
$i = 0;
while ($current != $last) {
$indexes = str_pad($i, $count, "0", STR_PAD_LEFT);
$j = str_split($indexes);
foreach ($j as $a => $b) {
if (isset($array[$b])) {
$output[$i][] = $array[$b];
}
}
$current = $output[$i];
$i++;
}
// cleaver duplication removal
$result = array_map("unserialize", array_unique(array_map("serialize", $output)));
echo '<pre>';
print_r($result);
echo '</pre>';
重复的删除密码从here。
您好,欢迎StackOverflow上。尽管您的计划可能会遇到麻烦,但我们强烈建议(并坚持)在向社区寻求帮助之前,您已尽其最大努力。很明显,您遇到了您尝试过的代码问题,我们很乐意提供帮助!如果您没有花费精力设计自己的解决方案,我们倾向于对您的问题进行降级投票并关闭它。你必须至少尝试一个解决方案。绝不要求别人写代码来代替诚实的努力。总之,[你试过什么](http://www.whathaveyoutried.com)? – Matt
嗨马特。对不起,我的工作没有包括在问题中。我将其添加为答案之一。它的作品,但它确实是一个非常懒惰的方式去,没有切割和幻想。如果源数组很大,它可能会超出内存限制。 – user389767
您需要遍历数组,递归地检查指针右侧的元素与当前元素的可能组合。被警告,这将需要时间和记忆与n大致成比例!所以不要在大型数组上使用它。 –