2010-08-30 35 views
12

Podemos usar array_unique() para eliminar una entrada duplicada de una sola matriz multidimensional en php.¿Es posible usarla con una matriz multidimensional? ¡No está funcionando para mí!PHP eliminar valores duplicados de la matriz multidimensional

Esto es lo que se ve como la matriz

Array (
    [0] => Array ([0] => 1001 [1] => john [2] => example) 
    [1] => Array ([0] => 1002 [1] => test [2] => dreamz) 
    [2] => Array ([0] => 1001 [1] => john [2] => example) 
    [3] => Array ([0] => 1001 [1] => example [2] => john) 
    [4] => Array ([0] => 1001 [1] => john [2] => example) 
) 

Cualquiera puede ayudarme por favor ...

+0

debe tener un duplicado de: http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php o http: // stackoverflow .com/questions/1861682/php-multi-dimensional-array-remove-duplicate –

+0

Oh ... lo siento ... lo siento ... – abhis

+1

Todas las funciones como array_unique() son solo una sintaxis de azúcar para bucles realmente simples. Con muy poco esfuerzo, puede hacerlo usted mismo con seguridad. Intenta ser más tortuoso. La programación no es solo copiar y pegar, a veces requiere un trabajo más inteligente. –

Respuesta

38

Los comentarios de los usuarios en la página de array_unique hacer arrojar alguna luz sobre esto. Lo más probable es que encuentres gemas ocultas en esos comentarios; es una documentación muy útil.

sólo un navegador rápido a través reveló lo siguiente para eliminar duplicados de una matriz multidimensional:

<?php 
function super_unique($array) 
{ 
    $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

    foreach ($result as $key => $value) 
    { 
    if (is_array($value)) 
    { 
     $result[$key] = super_unique($value); 
    } 
    } 

    return $result; 
} 
?> 
+1

Gracias por la ayuda Russell. El código funciona como un campeón. – abhis

+3

@Ajith ¿No te olvidas de algo? "Gracias por la ayuda" es una marca verde al lado de la respuesta. –

+0

Russell soy capaz de eliminar duplicados usando esta función pero tengo 1 problema de cómo indexar la matriz dentro de la matriz ... espero que pueda arrojar luz –

2

Usted puede serializar los subconjuntos (a través de serialize()) en una nueva matriz, a continuación, ejecutar array_unique() en que, y luego deserializar el conjunto resultante de matrices.

Cuestiones relacionadas