Сортировка массива- удаление дубликатов- как?

Тема в разделе "PHP", создана пользователем Neow15ard, 15 май 2011.

Модераторы: latteo
  1. Neow15ard

    Neow15ard

    Регистр.:
    27 ноя 2008
    Сообщения:
    422
    Симпатии:
    188
    Запутался с массивами(php 5.2)-
    есть массив
    $data[0]=(12121,1212,2112,1212,1243121);
    $data[1]=(12121,221212,2112,1212,12121);
    $data[2]=(12121,1212,324342112,4341212,12121);
    Надо удалить все $data[x] в которых значения $data[x][1] не уникальны.
    т.е. что осталось только $data[1] либо (2 вариант) $data[0] и $data[1];
    И потом соответсвенно их сдвинуть. что бы не было пустых $data[2];
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    561
    HTML:
    
    $data[0]=array(12121,1,2112,1212,1243121);
    $data[1]=array(12121,2,2112,1212,12121);
    $data[2]=array(12121,3,324342112,4341212,12121);
    $data[3]=array(121201,4,324342112,4341212,12121);
      /**
      * Уникализация по элементу в мессиве
      * @param <type> $array исходным массив
      * @param <type> $index_element - по которому элементу смотрим уникальность
      * @param <type> $delete - удалять первые (first) или последние (end)
      * @return <type> массив в котором подмассивы с $index_element не повторяются
      */
    function unique_by_element($array, $index_element=0, $delete ='first'){
     $unic_arr = array();
     foreach($array as $id_sub_arr=> $sub_arr){
        $e = $sub_arr[$index_element];
        if(isset($unic_arr[$e])){
            if('first' == $delete){
               unset($array[$unic_arr[$e]]); 
                $unic_arr[$e] = $id_sub_arr;
            }else{
                unset($array[$id_sub_arr]);  
            }
            continue;   
        }
         $unic_arr[$e] = $id_sub_arr;
     }   
    return $array;
    }
    /*
    Array
    (
        [0] => Array
            (
                [0] => 12121
                [1] => 1
                [2] => 2112
                [3] => 1212
                [4] => 1243121
            )
        [3] => Array
            (
                [0] => 121201
                [1] => 4
                [2] => 324342112
                [3] => 4341212
                [4] => 12121
            )
    )
    print_r($new_arr = unique_by_element($data, 0, 'end'));
    */
    /*
    Array
    (
        [2] => Array
            (
                [0] => 12121
                [1] => 3
                [2] => 324342112
                [3] => 4341212
                [4] => 12121
            )
        [3] => Array
            (
                [0] => 121201
                [1] => 4
                [2] => 324342112
                [3] => 4341212
                [4] => 12121
            )
    )
    print_r($new_arr = unique_by_element($data));
    */
    sort ($new_arr);
    print_r( $new_arr);
     
     
    Neow15ard нравится это.