【发布时间】:2016-09-02 19:15:21
【问题描述】:
我需要什么
我需要所有可能的 n 个元素对,不重复。假设我有这些数组:
$arr1 = [2, 4, 6, 7];
$arr2 = [6, 5, 4, 11];
$arr3 = [22, 1, 5, 8];
$final = [
'a' => $arr1,
'b' => $arr2,
'c' => $arr3
];
我现在需要的是:
$pairs = [
'ab' => [$arr1, $arr2],
'ac' => [$arr1, $arr3],
'bc' => [$arr2, $arr3]
];
我得到了什么
我到此为止:
function getPairs($array) {
$n = count($array);
$finalArray = [];
$i = 0;
foreach ($array as $a) {
for ($x = $n-1; 0 <= $x; $x--) {
if ($i != $x) {
$finalArray[] = [$array[$i], $array[$x]];
}
}
$i++;
}
return $finalArray;
}
然后:
$arr1 = [2, 4, 6, 7];
$arr2 = [6, 5, 4, 11];
$arr3 = [22, 1, 5, 8];
$merged = [$arr1, $arr2, $arr3];
$pairs = getPairs($merged);
我的方法有两个问题:
- 循环产生
$x = 0、$i = 1和后来的$i = 1、$x = 0,这会产生一个重复的数组。 - 我没有得到密钥(
ab、ac、cb)。
与这个问题类似,但使用数组键:Get all the combinations of N elements of multidimensional array
【问题讨论】: