【问题标题】:PHP merge arrays if they have the same key valuePHP合并数组,如果它们具有相同的键值
【发布时间】:2018-02-22 17:44:50
【问题描述】:

我有一个关联数组。

$array = [
    ['report_date' => 'date', 'name' => 'name'], 
    ['report_date' => 'date', 'color' => 'color']
];

我想对这个数组和if进行排序

$array[x]['report_date'] === $array[y]['report_date']

那么我需要执行在这种情况下会返回的合并:

$newArray = [['report_date'=>date,'name'=>name,'color'=>color]]

当然,我们需要考虑到可能有多个数组满足这个要求,我们也必须合并它们。

我尝试了几件事,导致映射和 foreach 合并需要很长时间才能处理,最终无法正常工作。

有什么想法吗?

【问题讨论】:

  • “我已经尝试了一些东西,” - 请分享您的尝试,以及原始输入和预期输出的一些真实示例。
  • 我最初的建议是重新考虑您要完成的工作。当您的解决方案看起来像这样时,通常意味着您要么不完全理解问题,要么您在兔子洞中徘徊。也许这会有所帮助en.wikipedia.org/wiki/Rubber_duck_debugging
  • 我正在编辑我的问题,但有人以预期的结果回答了它。我肯定会支持你们的 cmets,因为两者都是合理的建议。

标签: php arrays sorting merge


【解决方案1】:

您可以创建一个以report_date 为索引的新数组并将值推入其中:

$out=[];
foreach($array as $subarray){
    foreach($subarray as $key=>$val){
        $out[$subarray['report_date']][$key]=$val;
    }
}

var_dump($out);

【讨论】:

  • 这正是我需要的解决方案。谢谢。
  • 没问题,很高兴能帮到你。
猜你喜欢
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 2015-01-04
  • 2019-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多