【问题标题】:Php combine Multidimensional array?php结合多维数组?
【发布时间】:2010-09-27 14:36:28
【问题描述】:

我有如下数组

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)

【问题讨论】:

  • 这背后的规则是什么?
  • 您是否正在寻找一些功能可以满足您的需求?
  • 是的。我正在寻找功能。
  • 你的数组似乎不正确,如果不解释一下数组是如何生成的
  • 查看第 3 行数组 (A => 1, B=>2, C=>3) 在前 2 行重复,所以它应该在新数组中

标签: php multidimensional-array


【解决方案1】:

我想这就是你要找的东西:

$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,
  ),
)

【讨论】:

  • @JapanPro:问题的预期结果在哪里?
  • Gumbo,它应该适用于多维数组。并且多维数组可以达到 10
  • @user459588:什么多维数组?你能举一个这样的数组的例子吗?
  • array(A=>array(B=>2, C=>3, D=>4, E=>5, F=>array(G=>8,H=>9) ) X=>数组(Y=>22, Z=>33)
  • 见数组元素 F=>array(G=>8, H=>9, k=array(P=>121, Q=>444, R=>array(J=99, L =101))
猜你喜欢
  • 2013-07-10
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多