如果存在于其他数组中,则更新数组的值

我有这个数组$a:


[0] => Array

    (

        [param] => banana

        [value] => yellow

    )


[1] => Array

    (

        [param] => lemon

        [value] => 3

    )


[2] => Array

    (

        [param] => apple

        [value] => 18

    )

...和数组$b:


[0] => Array

    (

        [param] => banana

        [value] => brown

    )


[1] => Array

    (

        [param] => orange

        [value] => 3

    )


[2] => Array

    (

        [param] => lemon

        [value] => 4

    )


[3] => Array

    (

        [param] => pear

        [value] => green

    )

Array$c应该是 的副本$a,但是,如果$b包含存在于 中的某些参数,则$afrom 的值$a应更新为 from 的值$b。


所以$c会变成:


[0] => Array

    (

        [param] => banana

        [value] => brown

    )


[1] => Array

    (

        [param] => lemon

        [value] => 4

    )


[2] => Array

    (

        [param] => apple

        [value] => 18

    )

有小费吗?


一只甜甜圈
浏览 167回答 2
2回答

慕勒3428872

您可以将数组映射与多个数组一起使用,$c = array_filter(array_map(function ($a1, $b1) {    if ($a1['param'] == $b1['param']) {        $a1['value'] = $b1['value'];        return $a1;    } else {        return $a1;    }}, $a, $b));编辑$bData = array_column($b,'value','param'); // param as key and value as valueforeach($a as &$v){    $v['value'] = ($bData[$v['param']] ?? $v['value']); // php 7+       //or $v['value'] = (!empty($bData[$v['param']]) ? $bData[$v['param']] :   $v['value']);    // php 5.6 or previous}输出Array(    [0] => Array        (            [param] => banana            [value] => brown        )    [1] => Array        (            [param] => lemon            [value] => 4        )    [2] => Array        (            [param] => apple            [value] => 18        ))

素胚勾勒不出你

    $a = ['banana' => 'yellow', 'apple' => 3, 'lemon' => 18];    $b = ['banana' => 'brown', 'orange' => 3, 'lemon' => 4];    $a_keys = array_keys($a);    $c = $a;    foreach ($a_keys as $key) {        if(array_key_exists($key, $b)){            $c[$key] = $b[$key];        }    }
打开App,查看更多内容
随时随地看视频慕课网APP