求指点 foreach 循环2个数组并重组 以ID为条件 name为什么会重复(新人)

foreach 循环2个数组并重组 以ID为条件 name为什么会重复并且拿的是最后一位,要怎么做才不会重复
2个数组是我自己写的 现实中健值是不一致的

foreach($a as $k=>&$r){
    foreach ($b as $y => $value) {
        if ($r['id']==$value['id']) {
            $r['name']=$value['name'];
        }
    }
}
Array
(
    [0] => Array
        (
            [id] => 1
        )

    [1] => Array
        (
            [id] => 2
        )

    [2] => Array
        (
            [id] => 2
        )

    [3] => Array
        (
            [id] => 2
        )

    [4] => Array
        (
            [id] => 2
        )

)
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 1
        )

    [1] => Array
        (
            [id] => 2
            [name] => 张三
        )

    [2] => Array
        (
            [id] => 2
            [name] => 李四
        )

    [3] => Array
        (
            [id] => 2
            [name] => 王五
        )

    [4] => Array
        (
            [id] => 2
            [name] => 小二
        )

)

循环的结果

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 1
        )

    [1] => Array
        (
            [id] => 2
            [name] => 小二
        )

    [2] => Array
        (
            [id] => 2
            [name] => 小二
        )

    [3] => Array
        (
            [id] => 2
            [name] => 小二
        )

    [4] => Array
        (
            [id] => 2
            [name] => 小二
        )

)
阅读 2.3k
1 个回答

因为第二个数组的后面的 'id'=>2 是重复的,所以只取到了最后的值 '小二'

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题