stwen_web 2015-06-05 02:12 采纳率: 100%
浏览 1365
已采纳

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

$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

求高手指点。谢谢。

  • 写回答

2条回答 默认 最新

  • 一路向北-bruce 2015-06-05 04:21
    关注

    <?php
    $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 
                )
        );
    

    $arr3 = array_merge($arr1, $arr2);
    function arr_combine($array){//按照id值进行冒泡排序
    $length = count($array);
    for($i = 0; $i < $length; $i++) {
    for($j = $i+1; $j < $length; $j++){
    if ($array[$i]['id'] > $array[$j]['id'] ) {
    $tmp = $array[$i];
    $array[$i] = $array[$j];
    $array[$j] = $tmp;
    }else if($array[$i]['id'] == $array[$j]['id'] && $array[$i]['b'] == $array[$j]['b']){//按照id,b值是否相同,进行合并
    $array[$i]['num'] = $array[$i]['num']+$array[$j]['num'];
    $array[$j]['num'] = 0;//此处将合并过的数组的num设置为0
    }
    }
    }
    //对结果数组进行处理,如果num为0,则剔除
    foreach( $array as $key => $value ) {
    if($value['num'] == 0) unset($array[$key]);
    }
    return $array;
    }
    var_dump(arr_combine($arr3));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度