2016-12-16 173 views
0

我有这样两个阵列:PHP多维数组合并基于键

$array1 = [ 
    '1' => 285.52, 
    '2' => 427.76 
]; 

$array2 = [ 
    '1' => 123.44, 
    '2' => 48.32 
]; 

的键上的每个都是用于客户端的标识,第一个是所欠金额和第二个是量祈祷,我希望实现以下目标:

$mergedArrays = [ 
    '1' => [ 
    'owed' => 285.52, 
    'payed' => 123.44 
    ], 
    '2' => [ 
    'owed' => 427.76, 
    'payed' => 48.32 
    ] 
]; 

我在想,如果有一个PHP函数来做到这一点,我试图与array_merge_recursive但它只是使的四大元素在一起的数组。

任何帮助将非常感激。

+1

传统循环的问题是什么? – 2016-12-16 18:13:29

+1

没有嵌入/链接一些像[array_column](http://php.net/array_column)与[array_combine](http://php.net/array_combine)等类似内置函数的链接。 –

+0

@HillaryClintonEmailRemover我不知道,我认为这是更高效的性能明智的做它使用内置的功能,感谢tho – DSB

回答

1

根据按键

foreach($array1 as $key => $val) { 
    $mergedArrays[$key] = array('owed' => $val, 'payed' => $array2[$key]); 
} 

sample

+0

他说非传统 – 2016-12-16 18:17:12

+0

没有什么不是传统的,因为这个 – Fabio

+0

函数内置,我想我不知道为什么他想要使用一些复杂的事情来做简单的任务 – 2016-12-16 18:19:25

1
$array1 = [ 
    '1' => 285.52, 
    '2' => 427.76 
]; 

$array2 = [ 
    '1' => 123.44, 
    '2' => 48.32 
]; 

$final_arr = array_map(function($a1, $a2) { 
    return array(
     'owed' => $a1, 
     'paid' => $a2 
    ); 
}, $array1, $array2); 

$final_arr = array_combine(array_keys($array1), $final_arr); 

var_dump($final_arr); 

基于注释可以循环第一阵列中和合并的第二次,看来你正在寻找内置PHP函数为您完成任务而不是传统循环。但是Fabio提供的循环方法是最简单的一种,您可以在没有任何其他复杂方法的情况下使用。我尽我所能为您提供使用核心PHP函数的解决方案。希望你对此感到满意!