我怀疑这是正确的方法。会发生什么?您可以向方法提供任意数量的数组...[ 'jupiter', 'saturn',][ 'is', 'was',][ 'old', 'big', 'loved',]并创造...[ 'jupiter is big', 'jupiter is loved', 'jupiter is old', 'jupiter was big', 'jupiter was loved', 'jupiter was old', 'saturn is big', 'saturn is loved', 'saturn is old', 'saturn was big', 'saturn was loved', 'saturn was old',]你应该怎么做?Stackoverflow 喜欢尝试,所以就开始吧 👋我的方法目前有两个重复函数(带有嵌套的 for 循环)和十几个其他 for 循环,这不是您想象的实现此目的的最快方法。我确实第一次尝试使用聪明的数学,但开始让自己感到困惑。如果您有更好的解决方案,请您也解释一下!
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
这是我的代码,只有一个递归函数。它还接受一个矩阵作为参数,而不是 N 个数组。
function generateList($data){
if (count($data) == 0){
return null;
}
$current = $data[0];
$left = array_slice($data, 1);
$permutations = generateList($left);
$r = [];
foreach($current as $item){
if ($permutations){
foreach ($permutations as $rest) {
$r[] = $item . ' ' . $rest;
}
}
else {
$r[] = $item;
}
}
return $r;
}
$data = [
['jupiter', 'saturn'],
['is', 'was'],
['old', 'big', 'loved']
];
var_dump(generateList($data));
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报
0/150
提交
取消