php - 数组 PHP 的排列

标签 php arrays loops for-loop permutation

我有以下问题:

$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/27657987/

相关文章:

Python:获取列表的索引

c++ - 循环帮助 : string vector to 3D char vector

php - 没有从数据库中选择正确的 ID

javascript - Javascript - 以最快、更干净的方式比较 2 个对象数组

php - 使用帖子变量更新日历中的现有事件

c++ - 当您声明 "pointer type"形式(函数)参数 "like an const array"时,const 是什么?

php - 从数组中获取 3 个最低值,PHP

javascript - 将数组保存为键中的值并循环遍历它们以获取键

php - imagemagick 无法加载远程图像

PHP Curl 脚本可在浏览器中运行,但不能作为 Cron 作业运行