例如:
A数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>20)
[1] => Array ( [name] => lisi [sex] => girl [age]=>30)
[1] => Array ( [name] => wangwu [sex] => renyao [age]=>50)
)
B数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>30)
[1] => Array ( [name] => lisi [sex] => girl [age]=>20)
[1] => Array ( [name] => wangwu [sex] => girl [age]=>60)
)要求合并后的C数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>20)
[1] => Array ( [name] => lisi [sex] => girl [age]=>20)
[1] => Array ( [name] => wangwu [sex] => renyao [age]=>50)
)
就是说,合并时, 当这两个二维数组 中的记录的 name 相等时, 那么就返回age小的那个数组的记录作为新的数组的记录 

解决方案 »

  1.   

    <?php
    $array1 = array("color" => "red", 2, 4);
    $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
    $result = array_merge($array1, $array2);
    print_r($result);
    ?>//http://cn2.php.net/manual/en/function.array-merge.php
      

  2.   

    <?php
    $ar1 = array("color" => array("favorite" => "red"), 5);
    $ar2 = array(10, "color" => array("favorite" => "green", "blue"));
    $result = array_merge_recursive($ar1, $ar2);
    print_r($result);
    ?>
    //http://cn2.php.net/manual/en/function.array-merge-recursive.php/* //output
    Array
    (
        [color] => Array
            (
                [favorite] => Array
                    (
                        [0] => red
                        [1] => green
                    )            [0] => blue
            )    [0] => 5
        [1] => 10
    )
    */
      

  3.   

    <?php
    $arr1 = array(
    0=>array(
    'name'=>'zhangsan',
    'sex'=>'boy',
    'age'=>20
    ),
    1=>array(
    'name'=>'lisi',
    'sex'=>'boy',
    'age'=>30
    ),
    2=>array(
    'name'=>'wangwu',
    'sex'=>'boy',
    'age'=>40
    )
    );
    $arr2 = array(
    0=>array(
    'name'=>'zhangsan',
    'sex'=>'boy',
    'age'=>10
    ),
    1=>array(
    'name'=>'lisi',
    'sex'=>'boy',
    'age'=>20
    ),
    2=>array(
    'name'=>'wangwu',
    'sex'=>'boy',
    'age'=>50
    )
    );
    function getArray($arr1, $arr2) {

    $arr3 = array();
    for($i=0;$i<count($arr1);$i++) { if ($arr1[$i]['name'] == $arr2[$i]['name']) {

    if($arr1[$i]['age'] <= $arr2[$i]['age']) {

    $arr3[] = $arr1[$i];
    }else {
    $arr3[] = $arr2[$i];
    }
    }
    }
    return $arr3;
    }
    print_r(getArray($arr2,$arr1));
    ?>
      

  4.   


    /**测试数组一*/
    $arr1 = array(
        array("name"=>"zhangshan","sex"=>"boy","age"=>20),
        array("name"=>"lishi","sex"=>"girl","age"=>30),
        array("name"=>"wangwu","sex"=>"renyao ","age"=>50)
       );
    /**测试数组二*/ 
    $arr2 = array(
        array("name"=>"zhangshan","sex"=>"boy","age"=>10),
        array("name"=>"lishi","sex"=>"girl","age"=>20),
        array("name"=>"wangwu","sex"=>"boy ","age"=>60),
         array("name"=>"zhaoliu","sex"=>"boy ","age"=>60)
       );  
    /**测试数组三*/    
    $arr3 = array(
        array("name"=>"zhangshan","sex"=>"boy","age"=>30),
        array("name"=>"lishi","sex"=>"girl","age"=>20),
        array("name"=>"wangwu","sex"=>"boy ","age"=>60),
        array("name"=>"zhaoliu","sex"=>"boy ","age"=>60),
        array("name"=>"fuck7","sex"=>"boy ","age"=>30),
        array("name"=>"wang8","sex"=>"boy ","age"=>20)
     );     
     
     $merge_arr = array($arr1,$arr2,$arr3);
       
     $dest_val =   array_merge_new($merge_arr);
     /**
     * 遍历生成新的数组
     * **/   
    function   array_merge_new($arr)
    {
       $dest_arr = get_names_of($arr);
       $return_arr_withkey = array();
          $return_arr = array();
       foreach($arr as $key=>$val_arr)
       {
        foreach($val_arr as $key_val=>$val_val)
    {
    if(!isset($return_arr[$val_val["name"]]))
    {
    $return_arr_withkey[$val_val["name"]] = $val_val;
    }else 
    {
    if($val_val["age"] < $return_arr[$val_val["name"]]["age"])
    {
    $return_arr_withkey[$val_val["name"]] = $val_val;
    }
    }
    }

       }
       foreach($return_arr_withkey as $key=>$val)
       {
        $return_arr[]=$val;
       }
    return $return_arr;
    }
    /***
     * 按指定规则取得相就的健值列表. 当前规则是只要不同就列入键词列表
     */
    function get_names_of($arr)
    {
    $dest_array = array();
    foreach($arr as $key=>$val_arr)
    {
    foreach($val_arr as $key_val=>$val_val)
    {
    if(!in_array($val_val["name"],$dest_array))
    {
    $dest_array[]= $val_val["name"];
    }
    }
    }
    return $dest_array;

    }
      

  5.   

    $a = array (
      array ( 'name' => 'zhangsan', 'sex' => 'boy', 'age' => 20),
      array ( 'name' => 'lisi', 'sex' => 'girl', 'age' => 30),
      array ( 'name' => 'wangwu', 'sex' => 'renyao', 'age' => 50),
    );
    $b = array (
      array ( 'name' => 'zhangsan', 'sex' => 'boy', 'age' => 30),
      array ( 'name' => 'lisi', 'sex' => 'girl', 'age' => 20),
      array ( 'name' => 'wangwu', 'sex' => 'renyao', 'age' => 60),
    );function foo() {
      foreach(func_get_args() as $ar) {
        foreach($ar as $v) {
          $k = $v['name'];
          if(! $r[$k] || ($r[$k]['age'] >= $v['age'])) {
            $r[$k] = $v;
          }
        }
      }
      return $r;
    }      
    print_r(foo($a, $b));
      

  6.   

    <?php
    function getArray() {
    $array=func_get_args();
    $count=func_num_args();

    if($count == 1){
    return $array[0];
    }else{
    $arr1 = $array[0];
    $arr2 = $array[1];
    $arr3 = array();
    $names = array();
    foreach($arr1 as $a1) {
    foreach($arr2 as $a2) {
    if ($a1['name'] == $a2['name']) {
    $arr3[] = $a1['age'] <= $a2['age']?$a1:$a2;
    $names[$a1['name']] = 1;
    break;
    }
    }
    }
    foreach($arr1 as $a) {
    if(!array_key_exists($a['name'],$names)){
    $arr3[] = $a;
    }
    }
    foreach($arr2 as $a) {
    if(!array_key_exists($a['name'],$names)){
    $arr3[] = $a;
    }
    }
    for($i=2;$i<$count;$i++){
    $arr3 = getArray($arr3,$array[$i]);
    }
    return $arr3;
    }
    }//Test
    $arr1 = array(
        array(
            'name'=>'zhangsan',
            'sex'=>'boy',
            'age'=>20
        ),
        array(
            'name'=>'lisi',
            'sex'=>'boy',
            'age'=>30
        ),
        array(
            'name'=>'wangwu',
            'sex'=>'boy',
            'age'=>40
        ),
    array(
            'name'=>'test',
            'sex'=>'boy',
            'age'=>30
        )
    );
    $arr2 = array(
        array(
            'name'=>'zhangsan',
            'sex'=>'boy',
            'age'=>10
        ),
        array(
            'name'=>'lisi',
            'sex'=>'boy',
            'age'=>20
        ),
    array(
            'name'=>'a2t',
            'sex'=>'boy',
            'age'=>50
        ),
        array(
            'name'=>'wangwu',
            'sex'=>'boy',
            'age'=>50
        )
    );
    $arr3 = array(
        array(
            'name'=>'12321312',
            'sex'=>'boy',
            'age'=>10
        ),
        array(
            'name'=>'3333',
            'sex'=>'boy',
            'age'=>20
        )
    );
    $arr4 = getArray($arr1,$arr2,$arr3);
    print_r($arr4);
    ?>
      

  7.   

    有点麻烦,不写了主要是判断,name 相同,判断 age 大小。