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/10734514/

相关文章:

php - $row 没有正确地回显来自 mySql 数据库的一行

php - x264 [错误] : baseline profile doesn't support 4:2:2 , 与 ffmpeg php

php - 如何在有条件的情况下使用PHP将csv文件解析为mysql DB

php - 如何从数据库创建 JSON 树

JavaScript 数组语法

php - 如何一次只获取一个键值对? PHP

php - 更新已更改的属性/字段 PHP

c - 结构数组,无法检查条目是否为 NULL

python - 在 Python 中创建二维矩阵的更优雅的方式

r - 如何在 R 中的 foreach 循环中使用多重估算数据集(mids)对象?