$arr=array('a-1,b-1,b-2,c-1');如上面的那个数组.处理后的状态为 a-1,b-1,c-1 如各位所见,删除的条件是因为按逗号(,)分割的数组中,元素的第一个位(a,b,c).因为元素[1]和元素[1]中的第一个子元素b相同,所以去除其中一个,当然,可以是后面的,也可以是前面的.这处理方法类似于小型数据库.删除掉符合条件的重复元素.
我曾经想用两个数组$arr1和$arr2的方法.也有试过遍历的方法,array_unique的方法也试过.不过似乎不太理想...请教各位有什么高见或思路.都可以说一下.答者有分!

解决方案 »

  1.   


    function my_array_unique($from) {
        for ($i=count($from)-1;$i>1;$i--) {
            $last = $from[$i];
            $from[$i] = false;
            if (!in_array($last,$from)) {
                $from[$i]=$last;   
            }
        }
        $from = array_unique($from);
        $from = array_slice($from,0,count($from)-1);
        return $from;

      

  2.   

    $arr=array('a-1,b-1,b-2,c-1');function foo($s) {
      $ar = split(',', $s);
      $r = array();
      foreach($ar as $v) {
        list($a) = split('-', $v);
        $r[$a] = $v;
      }
      return join(',', $r); 
    }echo foo($arr[0]);a-1,b-2,c-1
      

  3.   

    $raw = array('a-1,b-1,b-2,c-1');
    $result = process($raw[0]);
    echo implode(',', $result);
    function process($str) {
    $output = array();
    foreach(explode(',', $str) as $value) {
    $output[$value{0}] = $value;
    }
    return $output; 
    }
      

  4.   

    我到觉得如果array merage 不过只使用于2维数组
      

  5.   


    $arr = array('a-1,b-1,b-2,c-1');
    $arr = explode(',',$arr[0]);
    $tmparr = array();
    foreach ($arr as $key => $val) {
    $v = $val[0];//只用于单字母,如果aa-1,bb-1需分割为数组
    if (in_array($v,$tmparr)) unset($arr[$key]);
    $tmparr[] = $v;
    }
    $arr = implode(',',$arr);
    var_dump($arr);