首页 > 解决方案 > 按键组合两个数组

问题描述

我有两个数组:

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 函数但无法获得所需的数组。我找到了一些解决方案,但没有帮助我,因为数组的结构不一样。

标签: phparraysmultidimensional-array

解决方案


由于数组是关联的,因此这是一项非常简单的任务。

循环数组 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;
    }
}

推荐阅读