Foros del Web » Programando para Internet » PHP »

No me funciona bien array_unique

Estas en el tema de No me funciona bien array_unique en el foro de PHP en Foros del Web. Buenos dias !! Me levanto con una pregunta tonta tipica de novatos, pero sinceramente me tiene un poco loco xk esto me hace algo raro ...
  #1 (permalink)  
Antiguo 20/05/2011, 02:22
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 12 años, 11 meses
Puntos: 1
No me funciona bien array_unique

Buenos dias !!

Me levanto con una pregunta tonta tipica de novatos, pero sinceramente me tiene un poco loco xk esto me hace algo raro que no comprendo.


La historia es que quiero utilizar array_unique para eliminar los duplicados, pero no me funciona correctamente. A ver si podeis encontrar el fallo, porque por mas que miro no lo encuentro.

El array lo tengo en $grosse

Codigo:

// Aqui me imprime el array original
echo "<br> Numero de tallas diferentes: ",count($grosse);
for($i=0;$i<count($grosse);$i++){
echo "<br>",$grosse[$i];
}


// Hago las tallas unicas
$grosse = array_unique($grosse);

//Aqui me dice que tengo 6 tallas diferentes como debe de ser, pero me ensenia 4
echo "<br> Numero de tallas diferentes: ",count($grosse);
for($i=0;$i<count($grosse);$i++){
echo "<br>",$grosse[$i];
}

//Aqui me muestra que el array esta bien creado, en contradicion de lo que me dice anteriormente con el bucle for.
echo "<br>";
print_r(array_values ($grosse));

echo "<br> Array test"

//Aqui pruebo a copiar dicho array en otro array para imprirlo
for($i=0;$i<count($grosse);$i++){
$test[$i] = $grosse[$i];
echo $test[$i];
}

//Ahora al llamar aqui se ve perfectamente que solo se han pasado las 4 primeras y ha dejado atras las dos ultimas.
echo "<br>",count($test);
print_r(array_values ($test));



Aqui les dejo el resultado del codigo para que vean como inexplicablemente se me pierden dos tallas. (Bueno seguro que tiene explicacion pero no la encuentro :P)

Resultado:

Numero de tallas diferentes: 18
W 31/L 30
W 31/L 34
W 30/L 32
W 30/L 34
W 31/L 30
W 30/L 32
W 31/L 30
W 34/L 34
W 30/L 30
W 30/L 34
W 34/L 34
W 30/L 32
W 31/L 34
W 30/L 34
W 34/L 34
W 31/L 34
W 30/L 30
W 30/L 30
Numero de tallas diferentes: 6
W 31/L 30
W 31/L 34
W 30/L 32
W 30/L 34


Array ( [0] => W 31/L 30 [1] => W 31/L 34 [2] => W 30/L 32 [3] => W 30/L 34 [4] => W 34/L 34 [5] => W 30/L 30 )

test de para ver si copia bien:
W 31/L 30 W 31/L 34 W 30/L 32 W 30/L 34
6Array ( [0] => W 31/L 30 [1] => W 31/L 34 [2] => W 30/L 32 [3] => W 30/L 34 [4] => [5] => )

Numero de tallas: 6


Muchas gracias anticipadas, espero que podais echarme una mano.

Saludos
  #2 (permalink)  
Antiguo 20/05/2011, 03:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 14
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: No me funciona bien array_unique

Hola de nuevo!!

Escribo simplemente para decir que he encontrado una solucion, aunque no al error ese.

Simplemente he implementado yo mismo la funcion array_unique y ahora me funciona todo como debe de ser, simplemente cambiando la funcion.

Aqui les dejo la funcion, por si alguien alguna vez le pasase algo parecido y quiera usarla.

function array_unique2($array) {

$container = array();
$i = 0;
foreach ($array as $a=>$b)
if (!in_array($b,$container)){
$container[$i]=$b;
$i++;
}
return $container;
}

Aunque la verdad que estoy curioso por el resultado que escribi antes, si alguien sabe lo que es agradeceria saberlo, solo por curiosidad y aprender.

Gracias de nuevo y saludos

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:25.