$a = Array
(
    '0' => Array
        (
            'user_id' => '40',
            'user_name' => '山山',
            'workno' => '1004'
       
        ),
    '1' => Array
        (
            'user_id' => '47',
            'user_name' => '好好',
            'workno' => '1014'
       
        ),
 '2' => Array
(
   'user_id' => '20',
   'user_name' => '战三',
   'workno' => '1014'
   
)
   
);
$b=Array
(
    '0' => Array
        (
            'user_id' => '40',
'newbuy' => '280'
       
        ),
    '1' => Array
        (
            'user_id' => '47',
            'newbuy' => '56'
        )
 
   
);
我想实现的效果是:$c = Array
(
    '0' => Array
        (
            'user_id' => '40',
            'user_name' => '山山',
            'workno' => '1004'
            'newbuy' => '280'        ),
    '1' => Array
        (
            'user_id' => '47',
            'user_name' => '好好',
            'workno' => '1014'
            'newbuy' => '56'        ),
 '2' => Array
(
   'user_id' => '20',
   'user_name' => '战三',
   'workno' => '1014'
                   'newbuy' => '0' )
   
);

解决方案 »

  1.   

    $a和$b是一一对应的么,还是有什么对应关系?
    如果是一一对应的:<?php
      foreach($b as $k=>$v)
        foreach($v as $s=>$t)
        {
         if(isset($a[$k]))
           {
            if(!isset($a[$k][$s]))
              $a[$k][$s] = $t;      }    }print_r($a);
      

  2.   


     for($i=0;$i<count($a);$i++){
         if($b[$i]){
                  $ar[$i]= array_merge($a[$i],$b[$i]);
     }else {
               $ar[$i]=$a[$i];
       $ar[$i]['newbuy']='0';
     }    }
     print_r($ar);
      

  3.   

    试一下这样做吧,我测试了,通过了
    $aa=array();
    foreach($a as $key=>$value){
      if (!isset($b[$key]))
       $aa[$key]=array_merge($a[$key]);
      else
       $aa[$key]=array_merge($a[$key],$b[$key]);
      
    }
    print_r($aa);
      

  4.   

    $a = Array
    (
        '0' => Array
            (   
                'user_id' => '40',
                'user_name' => '山山',
                'workno' => '1004'
               
            ),  
        '1' => Array
            (   
                'user_id' => '47',
                'user_name' => '好好',
                'workno' => '1014'
             
            ),  
         '2' => Array
        (   
               'user_id' => '20',
               'user_name' => '战三',
               'workno' => '1014'
       
        )   
       
    );
    $b=Array
    (
        '9' => Array
            (   
                'user_id' => '40',
                'newbuy' => '280'
               
            ),  
        '10' => Array
            (   
                'user_id' => '47',
                'newbuy' => '56'
            )   
     
       
    );
    foreach($b as $v){$arr[$v['user_id']] = $v;}
    foreach($a as $k=>$v)
    {
            if($arr[$v['user_id']]) $a[$k] = array_merge($v,$arr[$v['user_id']]); 
            else $a[$k] = array_merge($v,array('newbuy'=>'0'));
    }
    echo "<pre/>";
    print_r($a);
      

  5.   

    我这个代码怎么样 呵呵
    <?php$a = Array
        (
        '0' => Array
            (
            'user_id' => '40',
            'user_name' => '山山',
            'workno' => '1004'
        ),
        '1' => Array
            (
            'user_id' => '47',
            'user_name' => '好好',
            'workno' => '1014'
        ),
        '2' => Array
            (
            'user_id' => '20',
            'user_name' => '战三',
            'workno' => '1014'
        )
    );
    $b = Array
        (
        '0' => Array
            (
            'user_id' => '40',
            'newbuy' => '280'
        ),
        '1' => Array
            (
            'user_id' => '47',
            'newbuy' => '56'
        )
    );$k1 = array_keys($a['0']);
    $k2 = array_keys($b['0']);
    $k = array_merge($k1, $k2);$tmp = array('0', '0', '0', '0', '0');
    $c = array_combine($k, $tmp);for ($i = 0; $i < count($a); $i++) {
        if (isset($b[$i])) {
            $ar[$i] = array_merge($c, $a[$i]);
            $ar[$i] = array_merge($a[$i], $b[$i]);
        } else {
            $ar[$i] = array_merge($c, $a[$i]);
        }
    }
    print_r($ar['2']);?>
      

  6.   

    不好意思,你的测试没有达到我的效果啊。每个都要有newbuy的。你的最后一个就没有啊。楼上的对。
      

  7.   

    假如我现在又加入一个数组呢?$c=Array
    (
        '0' => Array
            (
                'user_id' => '40',
    'oldbuy' => '280'
           
            ),
        '1' => Array
            (
                'user_id' => '47',
                'oldbuy' => '56'
            ),
    '2' => Array
            (
                'user_id' => '46',
                'oldbuy' => '536'
            )
     
       
    );
      

  8.   

    for($i=0;$i<count($a);$i++){
    if(@$b[$i]){
    $a[$i] =  array_merge($a[$i],$b[$i]);
    }else{
    $a[$i]['newbuy'] = '0';
    }
    }
    print_r($a);
      

  9.   

    最后一个应该: '2' => Array
            (
                'user_id' => '20',
                'oldbuy' => '536'
            )
     
      

  10.   


    for($i=0;$i<count($a);$i++){
    if(@$b[$i]){
    $a[$i] =  array_merge($a[$i],$b[$i]);
    }else{
    $a[$i]['newbuy'] = '0';
    }
    if(@$c[$i]){
    $a[$i] =  array_merge($a[$i],$c[$i]);
    }else{
    $a[$i]['oldbuy'] = '0';
    }
    }
    print_r($a);
      

  11.   

    问问题咋不一次说完呢。。function multiMerge(){
            $args = func_get_args();
            foreach($args as $k=>$v)
            {   
                    foreach($v as $value)
                    {   
                            if($t[$value['user_id']]) 
                            {   
                                    $t[$value['user_id']] = array_merge($t[$value['user_id']],$value);
                            }   
                            else $t[$value['user_id']] = $value;
                    }   
            }   
            //至于key补全,你最好自己手动弄个key列表,根据这个列表,没有的自动补上,默认值为0.
            return array_values($t);             
    }
    echo "<pre/>";
    print_r(multiMerge($a,$b,$c));
      

  12.   

    顶一下 数组合并 出啦array_merge()以外 还有别的吗 我就知道这一个函数
      

  13.   

    header('Content-type: text/html; charset=utf-8');$a = Array (
    '0' => Array ('user_id' => '40', 'user_name' => '山山', 'workno' => '1004' ), 
    '1' => Array ('user_id' => '47', 'user_name' => '好好', 'workno' => '1014' ), 
    '2' => Array ('user_id' => '20', 'user_name' => '战三', 'workno' => '1014' ) );$b = Array (
    '0' => Array ('user_id' => '40', 'newbuy' => '280' ) , 
    '1' => Array ('user_id' => '47', 'newbuy' => '56' ) );foreach($a as $k=>$v){
    $a[$k]["newbuy"]=isin($b,$v["user_id"]);
    }function isin($arr,$num){
    $text=0;
    foreach($arr as $k=>$v){
    if($v["user_id"]!=$num){
    continue;
    }
    $text=$v["newbuy"];
    }
    return $text;
    }var_dump($a);