【问题标题】:Merging Multdimensional Array with similiar Key PHP合并具有相似键 PHP 的多维数组
【发布时间】:2016-01-19 08:05:49
【问题描述】:

在过去的几天里,我一直在努力解决这个问题。我环顾了 StackOverflow,但只遇到了解决方案依赖于多维数组中所有键相同的主题。

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

电流输出:

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

【问题讨论】:

  • 原始数组是什么样的?如果我们不知道它们的外观,我们无法告诉您如何转换它们。
  • 原始数组贴在上面 Current Output: 下,而所需的输出在下面?对不起,如果我搞砸了?
  • 你没有搞砸任何事情。但我很难确切地看到第一个如何变成第二个。所有算法都需要某种自动化模式,我在那里没有看到。它看起来好像是任意手动编辑的。你能详细说明一下吗?
  • 没关系。我只是注意到它们是按日期分组的。不应该太难。如果到那时还没有人回答,我会在明天继续工作。

标签: php arrays multidimensional-array merge


【解决方案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);

【讨论】:

  • 工作就像一个魅力。救命伴侣。 (Y) 也感谢您的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
相关资源
最近更新 更多