问个PHP数组合并的问题~请高手指点

stwen_web 2015-06-05 10:47:12
$arr1=array(
"0"=>array(
'id' => '2',
'b' => 0,
'num' => 4

),

"1"=>array(
'id' => '1',
'b' => 0,
'num' => 4
)
);
$arr2=array(
"1"=>array(
'id' => '3',
'b' => 0,
'num' => 4

),

"2"=>array(
'id' => '2',
'b' => 0,
'num' => 4
)
);

想要合并这个两个数组,判断条件,id,b两个元素都相同的情况的NUM值相加。新数组键值重新排列0 1 2 3
求高手指点。谢谢。
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-06-05
  • 打赏
  • 举报
回复
$arr1=array(
            "0"=>array(
                'id' => '2',
                'b' => 0,
                'num' => 4
 
                ),
 
            "1"=>array(
                'id' => '1',
                'b' => 0,
                'num' => 4 
                )
        );
 $arr2=array(
            "1"=>array(
                'id' => '3',
                'b' => 0,
                'num' => 4
 
                ),
 
            "2"=>array(
                'id' => '2',
                'b' => 0,
                'num' => 4 
                )
        );
foreach($arr1 as $v) $res["$v[id]_$v[b]"] = $v;
foreach($arr2 as $v)
  if(isset($res["$v[id]_$v[b]"])) $res["$v[id]_$v[b]"]['num'] += $v['num'];
  else $res["$v[id]_$v[b]"] = $v;
print_r(array_values($res));
Array
(
    [0] => Array
        (
            [id] => 2
            [b] => 0
            [num] => 8
        )

    [1] => Array
        (
            [id] => 1
            [b] => 0
            [num] => 4
        )

    [2] => Array
        (
            [id] => 3
            [b] => 0
            [num] => 4
        )

)

stwen_web 2015-06-05
  • 打赏
  • 举报
回复
有人在吗?
stwen_web 2015-06-05
  • 打赏
  • 举报
回复
引用 1 楼 lf_1031 的回复:
array_merge($fruits, $numbered); 合并数组就行了啊
大哥注意看条件 判断条件,id,b两个元素都相同的情况的NUM值相加。
安安_007 2015-06-05
  • 打赏
  • 举报
回复
array_merge($fruits, $numbered); 合并数组就行了啊
stwen_web 2015-06-05
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
$arr1=array(
            "0"=>array(
                'id' => '2',
                'b' => 0,
                'num' => 4
 
                ),
 
            "1"=>array(
                'id' => '1',
                'b' => 0,
                'num' => 4 
                )
        );
 $arr2=array(
            "1"=>array(
                'id' => '3',
                'b' => 0,
                'num' => 4
 
                ),
 
            "2"=>array(
                'id' => '2',
                'b' => 0,
                'num' => 4 
                )
        );
foreach($arr1 as $v) $res["$v[id]_$v[b]"] = $v;
foreach($arr2 as $v)
  if(isset($res["$v[id]_$v[b]"])) $res["$v[id]_$v[b]"]['num'] += $v['num'];
  else $res["$v[id]_$v[b]"] = $v;
print_r(array_values($res));
Array
(
    [0] => Array
        (
            [id] => 2
            [b] => 0
            [num] => 8
        )

    [1] => Array
        (
            [id] => 1
            [b] => 0
            [num] => 4
        )

    [2] => Array
        (
            [id] => 3
            [b] => 0
            [num] => 4
        )

)

非常感谢,看了以后思路又开阔了不少,收获良多,再次谢谢大神解答。

21,892

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧