为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
一只甜甜圈 2021-12-03 15:55:58
我有这个数组$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    )有小费吗?
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

您可以将数组映射与多个数组一起使用,


$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 value

foreach($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

        )


)


查看完整回答
反对 回复 2021-12-03
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞


    $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];

        }

    }


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 166 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信