现有一个二维数组 如图
现在第一维一共三个key
每个key对应的一个数组,里面可能有多个元素
我要实现的是每个key出一个元素, 然后组成一个新的包含所有组合的排列
如图
现在我是用如下算法做的。
但显然这个称不上是算法,
现在$data只有三个key, 要是有30个key,难道我要写30个foreach吗?
所以求一个算法,输出图2的结果
现有一个二维数组 如图
现在第一维一共三个key
每个key对应的一个数组,里面可能有多个元素
我要实现的是每个key出一个元素, 然后组成一个新的包含所有组合的排列
如图
现在我是用如下算法做的。
但显然这个称不上是算法,
现在$data只有三个key, 要是有30个key,难道我要写30个foreach吗?
所以求一个算法,输出图2的结果
补充一个使用循环的实现
现:保证数组的序列是有序的连续的
$data = [
['AAA', 'aaa', 'aAa'],
['BBB', 'bbb', 'bBb'],
['CCC', 'ccc', 'cCc'],
];
$result = [];
foreach (array_keys($data) as $k) {
$tmp = [];
if (empty($result)) {
$result = $data[$k];
} else {
foreach ($result as $item1) {
foreach ($data[$k] as $item2) {
$tmp[] = $item1 . '-' . $item2;
}
}
$result = $tmp;
}
}
var_dump($result);
1 回答3k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读