原数组是:
$a=array(
0=>array(
'A'=>'a1',
'B'=>'b1',
'C'=>'c',
),
1=>array(
'A'=>'a1',
'B'=>'b1',
'C'=>'c1',
),
2=>array(
'A'=>'a1',
'B'=>'b',
'C'=>'c1',
)
);如果‘A’,'B'下标对应的值相同,则合并成一个数组,最终要得到的数组如下:
$b=array(
0=>array(
0=>array(
'A'=>'a1',
'B'=>'b1',
'C'=>'c'
),
1=>array(
'A'=>'a1',
'B'=>'b1',
'C'=>'c1'
)
),
1=>array(
0=>array(
'A'=>'a1',
'B'=>'b',
'C'=>'c1'
)
)
);怎么做?

解决方案 »

  1.   

    array_merge_recursive();
      

  2.   

    作者是需要完全相同的字段合并,还是模糊性的字段的合并呢?
    (1)完全相同的字段匹配合并,例如:$a=123; $b="123";这两个变量的字段的类型不一样。
    (2)模糊性相同字段的匹配合并,例如:$a=123; $b="1 2 3";这样的两个变量除了其中的空格,trim掉之后进行匹配相同的字段合并呢?
      

  3.   

    php中的相同值有“==”和“===”两个不同的判断字符的
      

  4.   

    $a=array(
      0=>array(
        'A'=>'a1',
        'B'=>'b1',
        'C'=>'c',
      ),
      1=>array(
        'A'=>'a1',
        'B'=>'b1',
        'C'=>'c1',
      ),
      2=>array(
        'A'=>'a1',
        'B'=>'b',
        'C'=>'c1',
      )
    );
    foreach($a as $v) $b["$v[A]@#@$v[B]"][] = $v;
    var_export($b);array (
      'a1@#@b1' => 
      array (
        0 => 
        array (
          'A' => 'a1',
          'B' => 'b1',
          'C' => 'c',
        ),
        1 => 
        array (
          'A' => 'a1',
          'B' => 'b1',
          'C' => 'c1',
        ),
      ),
      'a1@#@b' => 
      array (
        0 => 
        array (
          'A' => 'a1',
          'B' => 'b',
          'C' => 'c1',
        ),
      ),
    )
    关联数组转下标数组:$b = array_values($b);