2015-10-20 54 views
2

在过去的几天里,我一直在为这个问题而苦苦挣扎。我浏览过StackOverflow,但只遇到了解决方案依赖多维数组中所有键的主题相同。将多维阵列与类似钥匙合并PHP

我的问题是基于类似的键和值合并多维数组。

电流输出:

Array ( 
    [0] => Array ( 
     [y] => 2015-10-17 [c] => 1 
    ) 
    [1] => Array ( 
     [y] => 2015-10-17 [b] => 1 
    ) 
    [2] => Array (
     [y] => 2015-10-17 [d] => 1 
    ) 
    [3] => Array ( 
     [y] => 2015-10-17 [a] => 6 
    ) 
    [4] => Array ( 
     [y] => 2015-10-18 [e] => 2 
    ) 
    [5] => Array ( 
     [y] => 2015-10-18 [c] => 1 
    ) 
    [6] => Array ( 
     [y] => 2015-10-18 [b] => 1 
    ) 
    [7] => Array ( 
     [y] => 2015-10-20 [c] => 1 
    ) 
    [8] => Array ( 
     [y] => 2015-10-20 [b] => 2 
    ) 
) 

所需的输出:

Array ( 
    [0] => Array ( 
     [y] => 2015-10-17 [c] => 1 [b] => 1 [d] => 1 [a] => 6 
    ) 
    [1] => Array ( 
     [y] => 2015-10-18 [e] => 2 [c] => 1 [b] => 1 
    ) 
    [2] => Array ( 
     [y] => 2015-10-20 [c] => 1 [b] => 2 
    ) 
) 
+0

原始数组的样子是什么样的?如果我们不知道它们的样子,我们无法告诉您如何转换它们。 – kainaw

+0

原始数组在Current Output: 下面显示,并且所需输出低于?对不起,如果我搞砸了一些upp? – Rahh

+0

你没有搞砸任何东西。但我很努力地看到第一个如何改变成第二个。所有的算法都需要一些自动化模式,我在那里看不到。它看起来好像是任意手动编辑的。你能详细阐述一下吗? – Christian

回答

1

创建日期作为密钥的结果阵列。如果它存在合并它。然后用array_values()来重新索引结果:

foreach($array as $value) { 
    if(isset($result[$value['y']])) { 
     $result[$value['y']] = array_merge($result[$value['y']], $value); 
    } else { 
     $result[$value['y']] = $value; 
    } 
} 
$result = array_values($result); 
+0

工作就像一个魅力。救生员队友。 (Y) 感谢您的解释。 – Rahh