现在有一数组如下Array ( [0] => hdd1 [1] => hda [2] => hda1 [3] => hda2 [4] => hda3 [5] => hdd [6]=>...) 根据数组的值,如果前三位字符一样的话就看做成一个值,最终效果如下:Array ( [0] => hdd [1] => hda [2] => ...) 请各位大牛帮下忙,谢谢了

解决方案 »

  1.   

    $arr1 = Array ( [0] => hdd1 [1] => hda [2] => hda1 [3] => hda2 [4] => hda3 [5] => hdd [6]=>...) ;
    $arr2 = array();
    foreach($arr1 as $item){
    $str3 = substr($item,0,3);
    if(!in_array($str3,$arr2))
      $arr2[] = $str3;
    }
    print_r($arr2);
      

  2.   

    奇异的写法
    $ar = array('hdd1', 'hda', 'hda1', 'hda2', 'hda3', 'hdd');function foo($v) {
      return substr($v, 0, 3);
    }$ar = array_slice(array_flip(array_flip(array_map('foo', $ar))), 0); 
    print_r($ar);
      

  3.   

    那要是把相同的变成二维数组呢?Array(
        ['hdd'] => array(
            [0] => 'hdd1'
        )
        ['hda'] => array(
            [0] => 'hda1'
            [1] => 'hda2'
            [2] => 'hda3'
        )
        [0]=>'hdb'
        ....
    )
      

  4.   

    foreach($arr1 as $item){
    $arr2[substr($item,0,3)][] = $item;
    }
      

  5.   

    $d = array('hdd1', 'hda', 'hda1', 'hda2', 'hda3', 'hdd');
    print_r(array_unique(array_map(create_function('$s','return substr($s,0,3);'),$d)));