Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php组合多维数组?_Php_Multidimensional Array - Fatal编程技术网

Php组合多维数组?

Php组合多维数组?,php,multidimensional-array,Php,Multidimensional Array,我有如下数组 array (A => 1) array (A => 1, B=>2) array (A => 1, B=>2, C=>3) array (A => 1, D=>4) array (A => 1, E=>5) array (A => 1, F=>6) array (A => 1, F=>6, G=>8) array (A => 1, F=>6, H=>9) array (X

我有如下数组

array (A => 1)
array (A => 1, B=>2)
array (A => 1, B=>2, C=>3)
array (A => 1, D=>4)
array (A => 1, E=>5)
array (A => 1, F=>6)
array (A => 1, F=>6, G=>8)
array (A => 1, F=>6, H=>9)
array (X => 11)
array (X => 11, Y=22)
array (X => 11, Z=33)
array(A=>array(B=>2, C=>3, D=>4, E=>5, F=>array(G=>8,H=>9))
  X=>array(Y=>22, Z=>33)
我需要形成如下数组

array (A => 1)
array (A => 1, B=>2)
array (A => 1, B=>2, C=>3)
array (A => 1, D=>4)
array (A => 1, E=>5)
array (A => 1, F=>6)
array (A => 1, F=>6, G=>8)
array (A => 1, F=>6, H=>9)
array (X => 11)
array (X => 11, Y=22)
array (X => 11, Z=33)
array(A=>array(B=>2, C=>3, D=>4, E=>5, F=>array(G=>8,H=>9))
  X=>array(Y=>22, Z=>33)

我想这就是你想要的:

$result = array();
foreach ($arrays as $array) {
    $ref = &$result;
    foreach ($array as $key => $val) {
        if (!isset($ref[$key])) {
            $ref[$key] = $val;
        } elseif (!is_array($ref[$key])) {
            $ref[$key] = array();
        }
        $ref = &$ref[$key];
    }
}
在这里,关键点被解释为使用引用在阵列中漫游的路径段。如果还没有值,则存储该值;如果已经存在一个值,则将其替换为一个数组

但这产生了一个稍微不同的结果:

array (
  'A' => 
  array (
    'B' => 
    array (
      'C' => 3,
    ),
    'D' => 4,
    'E' => 5,
    'F' => 
    array (
      'G' => 8,
      'H' => 9,
    ),
  ),
  'X' => 
  array (
    'Y' => 22,
    'Z' => 33,
  ),
)

这背后的规则是什么?你是在寻找一些功能,做你正在寻找的吗?是的。我在寻找函数。你的数组似乎不正确,如果不解释一下数组是如何生成的请看第三行数组(a=>1,B=>2,C=>3)在前两行中是重复的,所以它应该是新的array@JapanPro:在问题的预期结果中它在哪里?Gumbo,它应该适用于多维数组。多维阵列可以达到10@user459588:什么多维数组?你能给出这样一个数组的例子吗?数组(A=>array(B=>2,C=>3,D=>4,E=>5,F=>array(G=>8,H=>9))X=>array(Y=>22,Z=>33)参见数组元素F=>array(G=>8,H=>9,k=array(P=>121,Q=>444,R=>array(J=99,L=101))