2015-11-20 3 views
0

Я пробовал много способов устранить дубликат значения в массиве, но я не смог удалить значение и дубликаты.Удалить повторяющееся значение и значения

Array 
(
[0] => Array 
    (
     [rut] => 333333333 
     [inscripcion_id] => 3940 
    ) 

[1] => Array 
    (
     [rut] => 444444444 
     [inscripcion_id] => 3941 
    ) 

[2] => Array 
    (
     [rut] => 333333333 
     [inscripcion_id] => 3985 
    ) 

) 

То, что я хотел бы получить, что только останется в этом случае:

Array 
(
    [rut] => 444444444 
    [inscripcion_id] => 3941 
) 

И другие сохранить повторяющиеся значения в массиве.

+0

и что вы пытался получить ожидаемый результат? – swidmann

+2

На этот вопрос был дан ответ. Взгляните на http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php –

+0

@FergalAndrews Это не сработало для меня, возможно потому что это множественная договоренность – NHTorres

ответ

0

Мое решение:

function unique_multidim_array($arreglo){ 
    $duplicate = array(); 
    $i = 0; 
    foreach ($arreglo as $a) { 
     foreach ($a as $b) { 
     $count_values[$b]++; 
     } 
    } 
    foreach ($arreglo as $key) { 
     if($count_values[$key['rut']] > 1){ 
      $duplicate[$i] = $key; 
      $i++; 
     } 

    } 
    return $duplicate; 
} 

возвращается:

Array 
(
[0] => Array 
    (
     [rut] => 333333333 
     [inscripcion_id] => 3940 
    ) 

[1] => Array 
    (
     [rut] => 333333333 
     [inscripcion_id] => 3985 
    ) 

) 
+0

O (n^2) + O (n)? Там должно существовать что-то лучше, чтобы устранить дубликаты. –

0

Вот моя попытка ... это требует PHP 5.5.0 через

$arr1 = Array 
    (
    "0" => Array 
     (
      "rut" => 333333333, 
      "inscripcion_id" => 3940 
     ), 

    "1" => Array 
     (
      "rut" => 444444444, 
      "inscripcion_id" => 3941 
     ), 

    "2" => Array 
     (
      "rut" => 333333333, 
      "inscripcion_id" => 3985 
     ), 
    "3" => Array 
     (
      "rut" => 555555555, 
      "inscripcion_id" => 3987 
     ) 

    ); 

$unique_array = array(); 
$unique_value = array_keys(array_count_values(array_column($arr1, "rut")), 1, true); 

foreach ($arr1 as $key => $inner_arr) { 
    if (in_array($inner_arr["rut"], $unique_value)) { 
     $unique_array[] = $arr1[$key]; 
     unset($arr1[$key]); 
    } 
} 

выход ($arr1):

Array 
(
    [0] => Array 
     (
      [rut] => 333333333 
      [inscripcion_id] => 3940 
     ) 

    [2] => Array 
     (
      [rut] => 333333333 
      [inscripcion_id] => 3985 
     ) 

) 

выход ($unique_array):

Array 
(
    [0] => Array 
     (
      [rut] => 444444444 
      [inscripcion_id] => 3941 
     ) 

    [1] => Array 
     (
      [rut] => 555555555 
      [inscripcion_id] => 3987 
     ) 

) 

Вот demo

Я должен отметить, что исходный массив ключей не будет в сделке порядка в отключенном методе

+0

Спасибо за ваш ответ, к сожалению, я имею дело с более низкой версией PHP, поэтому array_column не работает для меня, спасибо в любом случае! – NHTorres

+0

@sioesi какая версия php вы используете? – Andrew

Смежные вопросы