如果我有以下数组:
array(1,2,3,4,5)
如何找到所有独特的,非重复的3种选择组合?
例如,这些是有效值:
[1,2,3]
[1,2,4]
[1,2,5]
但这不是有效的:
[1,3,2]
因为它与[1,2,3]
相同答案 0 :(得分:0)
如果要查找所有唯一的3元组(不区分顺序(例如[1,2,3]与[2,1,3]相同)),可以使用3个嵌套for循环来完成。第一个元素从第一个元素开始,第二个元素循环每次开始一个元素,依此类推。
$arr = array(1, 2, 3, 4, 5);
for ($i = 0; $i < count($arr) - 2; $i++) {
$value = $arr[$i];
for($j = $i+1; $j < count($arr) - 1; $j++) {
$value2 = $arr[$j];
for($k = $j+1; $k < count($arr); $k++) {
$value3 = $arr[$k];
echo "[".$value.",".$value2.",".$value3."]\n";
}
}
}
输出:
[1,2,3]
[1,2,4]
[1,2,5]
[1,3,4]
[1,3,5]
[1,4,5]
[2,3,4]
[2,3,5]
[2,4,5]
[3,4,5]
PS:在@JuanLopes重复的问题中指出的解决方案应该是首选,因为它更为通用。