2017-09-13 75 views
0

我有一个关联数组的数组。PHP合并数组,如果他们有相同的键值

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

我想通过这个数组排序,如果

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

然后我需要执行合并,将返回在这种情况下:

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

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

我已经尝试了一些事情,导致映射和foreach合并,永久处理和最终无法得到它的工作。

任何想法?

+1

_“我试了几件事情,” _ - 请分享你试了一下,一起以及一些原始输入和预期输出的实例。 –

+1

我最初的建议是重新思考你想要完​​成的事情。当你的解决方案看起来像这样,通常意味着你要么完全不了解问题,要么你在一个兔子洞里徘徊。也许这将有助于https://en.wikipedia.org/wiki/Rubber_duck_debugging – Halfstop

+0

我正在编辑我的问题,但有人回答它与理想的结果。我肯定会赞扬你们的评论,因为这些建议都是很有说服力的。 –

回答

2

您可以创建一个新的数组,由report_date索引并推值到它:

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

var_dump($out); 
+0

这正是我需要的解决方案。谢谢。 –

+0

没问题,很高兴我能帮到你。 – Steve