$a = array (
 0 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'1'), 
 1 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'2'), 
 2 => array ( 'id' => '11', 'title' => 'b','type' => '2', 'bian'=>'1'),
 3 => array ( 'id' => '11', 'title' => 'c','type' => '2', 'bian'=>'2'),  
);
$b = array (
 0 => array ( '10' => '1','11_2' => '1'), 
 1 => array ( '10' => '1','11_2' => '1'),
 2 => array ( '11_1' => '1','11_2' => '1'),
 3 => array ( '10' => '2','11_2' => '1'),  
);
$t = array();
foreach($a as $item) {
  if($item['type'] == '1') {
    $t[$item['id']] = '';
  }else $t[$item['id'].'_'.$item['bian']] = '';
}
$c = array();
foreach($b as $v) {
  $r = array();
  foreach($t as $k=>$n) $r[$k] = @$v[$k];
  $c[] = $r;
}
print_r($c);Array
(
    [0] => Array
        (
            [10] => 1
            [11_1] => 
            [11_2] => 1
        )    [1] => Array
        (
            [10] => 1
            [11_1] => 
            [11_2] => 1
        )    [2] => Array
        (
            [10] => 
            [11_1] => 1
            [11_2] => 1
        )    [3] => Array
        (
            [10] => 2
            [11_1] => 
            [11_2] => 1
        ))

解决方案 »

  1.   

    如果在$C里追加$t做为元素是不是要重新遍历?
    追加 array ( '10' => '', '11_1' => '','11_2' => '')做为$c的
      

  2.   


    $a = array (
     0 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'1'), 
     1 => array ( 'id' => '10', 'title' => 'a','type' => '1', 'bian'=>'2'), 
     2 => array ( 'id' => '11', 'title' => 'b','type' => '2', 'bian'=>'1'),
     3 => array ( 'id' => '11', 'title' => 'c','type' => '2', 'bian'=>'2'),  
    );
    $b = array (
     0 => array ( '10' => '1','11_2' => '1'), 
     1 => array ( '10' => '1','11_2' => '1'),
     2 => array ( '11_1' => '1','11_2' => '1'),
     3 => array ( '10' => '2','11_2' => '1'),  
    );
    $t = array();
    foreach($a as $item) {
      if($item['type'] == '1') {
        $t[$item['id']] = '';
      }else $t[$item['id'].'_'.$item['bian']] = '';
    }
    $c = array();
    foreach($b as $v) {
      $r = array();
      foreach($t as $k=>$n) $r[$k] = @$v[$k];
      $c[] = $r;
    }
    print_r($c);就是数组a整里的结果插到$c中,是不是一定要把$c在遍历一次?
      

  3.   

    这么说吧。现在$t是整理$a得到的数组,$c是合并$t和$b。我想在$c里在插入$t。版主应该怎么改?
      

  4.   


    Array
    (
        0=> array ( '10' => '', '11_1' => '','11_2' => '')//就插在这里
        [0] => Array
            (
                [10] => 1
                [11_1] => 
                [11_2] => 1
            )
     
        [1] => Array
            (
                [10] => 1
                [11_1] => 
                [11_2] => 1
            )
     
        [2] => Array
            (
                [10] => 
                [11_1] => 1
                [11_2] => 1
            )
     
        [3] => Array
            (
                [10] => 2
                [11_1] => 
                [11_2] => 1
            )
     
    )
      

  5.   

    如果你一开始就打算放进去,那么
    $c = array();
    改为
    $c = array($t);