我有以下问题:
$multidmimensional = array(
[0] => array(
[0] => 1,
[1] => 2,
[2] => 3
);
[1] => array(
[0] => 5,
[1] => 6,
[2] => 7
);
...
[2] => array(
[0] =>,4
[1] => 5,
);
);
我可以有一个或多个(嵌套)数组,让我们以上面的前两个数组为例:
我应该按以下方式排列它们:
15
16
17
25
26
27
36
37
38
如果我有这三个数组,我应该得到这样的结果:
154
164
174
155
165
175
254
264
274
255
265
275
364
374
384
365
375
385
我在制定解决此问题的算法时遇到一些问题。谁能帮我? 提前致谢。
最佳答案
这是一个很好的脑筋急转弯问题。这是我想到的,请参阅 running demo用于测试和调整。
$multidimensional = array(
0 => array(
0 => 1,
1 => 2,
2 => 3,
),
1 => array(
0 => 5,
1 => 6,
2 => 7,
),
2 => array(
0 => 4,
1 => 5,
),
); // just your input
$permutations = array();
$count = count($multidimensional);
for ($i = 0; $i < $count; $i++) {
$temp = array_map("permute",array($permutations),array($multidimensional[$i]));
$permutations = $temp[0];
}
print_r($permutations); // OUTPUT
function permute($base,$add) {
$result = array();
if (count($base) > 0) {
foreach ($base AS $val1) {
if (count($add) > 0) {
foreach ($add AS $val2) {
$result[] = $val1.$val2;
}
}
else {
$result = $base;
}
}
}
else {
$result = $add;
}
return $result;
}
关于php - PHP 数组的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10734514/