Php 按键组合两个数组
我有两个阵列:Php 按键组合两个数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有两个阵列: Array ( [15407] => Array ( [id] => 15407 [group] => 9083 [value] => 60.00000 ) [15473] => Array ( [id] => 15473 [group] => 9109 [value] => -15.000000 )
Array
(
[15407] => Array
(
[id] => 15407
[group] => 9083
[value] => 60.00000
)
[15473] => Array
(
[id] => 15473
[group] => 9109
[value] => -15.000000
)
[15474] => Array
(
[id] => 15474
[group] => 9109
[value] => -20.000000
)
)
Array
(
[15407] => Array
(
[id] => 15407
[group] => 9083
[value_prev] => 100.000000
)
[15474] => Array
(
[id] => 15474
[group] => 9109
[value_prev] => -100.000000
)
)
我试图按键组合这些数组,如果匹配,则添加新元素(value_prev),如果不存在,则添加0,因此我需要这些数组:
Array
(
[15407] => Array
(
[id] => 15407
[group] => 9083
[value] => 60.00000
[value_prev] => 100.000000
)
[15473] => Array
(
[id] => 15473
[group] => 9109
[value] => -15.000000
[value_prev] => 0
)
[15474] => Array
(
[id] => 15474
[group] => 9109
[value] => -20.000000
[value_prev] => -100.000000
)
)
我尝试使用array_keys函数,但无法获得所需的数组。
我找到了一些解决方案,但没有帮助我,因为数组的结构不同。因为数组是关联的,所以这是一项非常简单的任务 循环数组1,查看该键是否存在于数组2中,如果它确实复制了值,则添加0值
$keys = array_keys($arr2);
foreach($arr1 as $key => &$sub){
if(in_array($key, $keys)){
$sub["value_prev"] = $arr2[$key]["value_prev"];
}else{
$sub["value_prev"] = 0;
}
}
由于数组是关联的,所以这是一项非常简单的任务 循环数组1,查看该键是否存在于数组2中,如果它确实复制了值,则添加0值
$keys = array_keys($arr2);
foreach($arr1 as $key => &$sub){
if(in_array($key, $keys)){
$sub["value_prev"] = $arr2[$key]["value_prev"];
}else{
$sub["value_prev"] = 0;
}
}
你应该发布你的尝试,而不仅仅是“尝试…”。你应该发布你的尝试,而不仅仅是“尝试…”。没有给我预期的数组。我找到了使用数组替换递归的解决方案,它给了我几乎很好的数组,只是缺少值prev 0。无论如何,谢谢你现在让我测试代码并重写你的数组,我不喜欢这样!这与您的预期输出有什么不同@Pecoou没有给我预期的数组。我找到了使用数组替换递归的解决方案,它给了我几乎很好的数组,只是缺少值prev 0。无论如何,谢谢你现在让我测试代码并重写你的数组,我不喜欢这样!这与您的预期输出有什么不同@佩库