假设我有一个如下所示的数组:
Array
(
[arm] => Array
(
[0] => A
[1] => B
[2] => C
)
[gender] => Array
(
[0] => Female
[1] => Male
)
[location] => Array
(
[0] => Vancouver
[1] => Calgary
)
)
如何找到笛卡尔乘积,同时保留外部关联数组的键并在内部关联数组中使用它们?算法的结果应该是:
Array
(
[0] => Array
(
[arm] => A
[gender] => Female
[location] => Vancouver
)
[1] => Array
(
[arm] => A
[gender] => Female
[location] => Calgary
)
[2] => Array
(
[arm] => A
[gender] => Male
[location] => Vancouver
)
...etc.
我已经查找了相当多的笛卡尔乘积算法,但我被如何保留关联键的细节所困扰。我目前使用的算法只给出了数字索引:
$result = array();
foreach ($map as $a) {
if (empty($result)) {
$result = $a;
continue;
}
$res = array();
foreach ($result as $r) {
foreach ($a as $v) {
$res[] = array_merge((array)$r, (array)$v);
}
}
$result = $res;
}
print_r($result);
任何帮助都将不胜感激。
https://stackoverflow.com/questions/6311779
复制相似问题