Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按键组合两个数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

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。无论如何,谢谢你现在让我测试代码并重写你的数组,我不喜欢这样!这与您的预期输出有什么不同@佩库