2011-03-06 16 views
11

Necesito una función como array_unique para matrices dentro de la matriz.array_unique para matrices dentro de la matriz

El caso - debe ser igual, pero la producción "es igual a":

<?php 
$arr=array(array('a',1),array('a',2)); 
$arr2=array_unique($arr); 
if($arr2==$arr){ 
    echo "equal"; 
} 
else{ 
    echo "not equal"; 
} 
?> 

¿Cómo debe ser cambiado el código para obtener una salida "iguales"?

+0

hombre, esto siempre aparece. Lea el [manual] (http://www.php.net/manual/en/function.array-unique.php), dice "Tenga en cuenta que array_unique() no está destinado a trabajar en matrices multidimensionales". – BoltClock

+2

Estoy pidiendo una solución "me gusta", por favor lea mi pregunta – Yosef

+0

No entiendo lo que quiere decir con "Hola, como array_unique para matrices dentro de la matriz". – BoltClock

Respuesta

31

Debe modificar su llamada para array_unique para que incluya la bandera SORT_REGULAR.

$arr2 = array_unique($arr, SORT_REGULAR); 
2

Si desea probar si la matriz externa tiene entradas únicas, entonces stringify el contenido interno en primer lugar para una comparación:

$arr1 = array_map("serialize", $arr); 
$arr2 = array_unique($arr1); 
if ($arr2 == $arr1) { 
-1
function array_unique_when_values_are_serializable($main_array) { 
    return array_map('unserialize', array_values(array_unique(array_map('serialize', $main_array)))); 
} 
+1

Por favor explique su respuesta. SO existe para enseñar a los usuarios, no solo para responder preguntas. – Machavity

Cuestiones relacionadas