有个二数组 类似下面这种$a = {
 [0] => array(
  'name' = 'wanglong',
  'age' = 33
 ) [1] => array(
  'name' = 'chenJong',
  'age' = 33
 ) [2] => array(
  'name' = 'wanglong',
  'age' = 33
 )
}如何让  重复name索引 的数组只出现一次例如变成$a = {
 [0] => array(
  'name' = 'wanglong',
  'age' = 33
 ) [1] => array(
  'name' = 'chenJong',
  'age' = 33
 )}

解决方案 »

  1.   

    在输出循环输出二维数组时,用array_unique ()函数可以去掉重复,
    这个函数课程参考PHP_manual上面很详细!!
      

  2.   

    array_unique() 只对一维数组有用  二维的无用!
      

  3.   


    function unique_arr($array) {
    $name = array();
       foreach ($array as $k=>$na)
    {    
       if(!in_array($na['name'],$name))
      {
    $out[] = $na;
    $name[] = $na['name'];
      }
    }
    return $out; 
    }$a = array(
      array(
      'name' => 'wanglong',
      'age' => 33
     ), array(
      'name' => 'chenJong',
      'age' => 32
     ),array(
      'name' => 'wanglong',
      'age' => 33
     )
    );print_r(unique_arr($a));
      

  4.   


    function multi_unique($array) {
       foreach ($array as $k=>$na)
           $new[$k] = serialize($na);
       $uniq = array_unique($new);
       foreach($uniq as $k=>$ser)
           $new1[$k] = unserialize($ser);
       return ($new1);
    }
    手册上的一个例子 不过只有当数组中的值完全相同时才会删除 
      

  5.   


       1. //二维数组去掉重复值  
       2. function unique_arr($array2D){  
       3.     foreach ($array2D as $v){  
       4.          $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串  
       5.          $temp[] = $v;  
       6.      }  
       7.      $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组  
       8.     foreach ($temp as $k => $v){  
       9.         $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装  
      10.     }  
      11.     return $temp;  
      12. }  
      

  6.   

    如果我写,可能考虑牺牲空间来做大概如下,用第二个数组下标来保存已经存在的name,只要遍历一次数组即可
    $a = array(
    array(
    'name' => 'wanglong',
    'age' => 33
    ),
    array(
    'name' => 'chenJong',
    'age' => 33
    ),
    array(
    'name' => 'wanglong',
    'age' => 33
    ),
    );$res = $key = array();
    foreach($a AS $v)
    {
    if(!isset($key[$v['name']]))
    {
    $key[$v['name']] = 1;
    $res[] = $v;
    }
    }
    print_r($res);
      

  7.   

    $a    = array(
        array(
            'name' => 'wanglong',
            'age' => 33
        ),
        array(
            'name' => 'chenJong',
            'age' => 33
        ),
        array(
            'name' => 'wanglong',
            'age' => 33
        ),
    );foreach($a as $c) $r[$c['name']] = $c;$a = array_values($r);