Foros del Web » Programando para Internet » PHP »

eliminar elementos repetidos de un array

Estas en el tema de eliminar elementos repetidos de un array en el foro de PHP en Foros del Web. eso, tengo un array con elementos 15, 20, 40, 15 por ejemplo y yo quiero eliminar los repetidos, o sea, que me quede 15, 20, ...
  #1 (permalink)  
Antiguo 06/07/2005, 10:06
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 0
eliminar elementos repetidos de un array

eso, tengo un array con elementos 15, 20, 40, 15 por ejemplo y yo quiero eliminar los repetidos, o sea, que me quede 15, 20, 40. Gracias.
  #2 (permalink)  
Antiguo 06/07/2005, 10:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
$array_resultante = array_unique ($array_a_tratar);
  #3 (permalink)  
Antiguo 06/07/2005, 10:16
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Con array_flip:
Código PHP:
<?
$tuArray
=array("uno","dos","tres","uno","cuatro");
print_r(array_flip(array_flip($tuArray)));
?>
La salida sería:
Array
(
   [3] => uno
   [1] => dos
   [2] => tres
   [4] => cuentro
)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #4 (permalink)  
Antiguo 06/07/2005, 12:13
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 0
hola, acabo de probar el código y no me funciono, yo tenia en el arreglo 15 13 15 aplique el codigo y me trajo los mismos resultados
  #5 (permalink)  
Antiguo 06/07/2005, 12:21
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
si haces esto:
$tuArray=array(15,13,15);
print_r(array_flip(array_flip($tuArray)));

O haces como dije pellagofio:
$tuArray=array(15,13,15);
print_r(array_unique ($tuArray));
(este te regenera los indices)

Funciona perfecto en ambos casos.

PD: Al menos yo no soy adivino, asi que podrías haberte molestado en poner al menos el codigo que estas usando.
PD2: En el listado de thread hay uno con normas, estaria bueno que lo leas, asi todos nos ahorramos tiempo.
PD3: Dar gracias nunca esta de mas.
PD4: Si no te gusta la ayuda que se te pueda dar aca o en algun foro (al menos asi suena tu respuesta), vista php.net y fijate....si yo lo vi, lo puede ver hasta alguien de 5 años.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 06/07/2005, 12:33
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 0
No te enojes, no fue mi intención ofender a nadie, si no puse código fue porque pense que como la pregunta era puntual, no necesitaria mostrar código. Aca pongo algo de código a ver si me pueden alludar, Gracias.

while ($dato<$cantidad) {
mysql_select_db($database_conexportal, $conexportal);
$traer_ides = ("SELECT * FROM noticias WHERE noticias.titulo_noticia LIKE '%".$desglose[$dato]."%'");
$ides_traidos = mysql_query($traer_ides, $conexportal) or die(mysql_error());
///////////////////////////////////////////////////////////////////////
if (mysql_num_rows($ides_traidos)){
while ($row_ides = @mysql_fetch_array($ides_traidos)) {
$myarreglo[$dato] = $row_ides["id_noticia"];
}
echo "</table> \n";
}
//////////////////////////////////////////////////////////////////

$dato++;
}

array_flip(array_flip($myarreglo));

for ($contar=0;$contar<count($myarreglo);$contar++)
{
echo $myarreglo[$contar];
}

como ves $myarreglo se carga con todas las id que encuentra, en el caso que explicaba antes obtenia 15 13 15 pero después de aplicar el código no me funco, bueno eso, gracias.

P.D. Este foro es exelente, he recibido mucha ayuda asi como le he dado ayuda a otros y siempre alguien tiene una respuesta, como decia, este foro es exelente. y no te enfades, no quise ofender a nadie, en serio.
  #7 (permalink)  
Antiguo 06/07/2005, 12:41
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
No me enfado, si lo hiciera no postearia directamente. Lo que trato es de "educar", (en el buen sentido) las costumbres, por que muchas veces veo como malos modales (o tal vez me parecen a mi). Todos en algun momento preguntamos, y todavia lo hago en mi caso, pero tengo otra manera de hacerlo.

Cambiando de tema, intenta en un archivo nuevo, como te puse antes, de hacer:

$tuArray=array(15,13,15);
print_r(array_unique ($tuArray));
(en tu caso te servira mas este, ya que no necesitas los indices)
Y fijate que funciona.
Despues, anda debugueando el codigo, en algun lugar haces algo indebido.

Igual, el problema esta en que cuando haces:
array_flip(array_flip($myarreglo));
No se lo estas asignando a nada.
Hace algo como
$myArregloLimpio = array_flip(array_flip($myarreglo));

Y usa $myArregloLimpio en el for siguiente.

Avisa si te funciono.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #8 (permalink)  
Antiguo 06/07/2005, 12:52
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 0
gracias, ya me estoy acercando. Mira hice esta modificación al final

$myarreglo_limpio = array_unique($myarreglo);

for ($contar=0;$contar<count($myarreglo_limpio);$conta r++)
{
echo $myarreglo_limpio[$contar];
}

pero con la cadena 15 13 15 en lugar de mostrarme 15 13 me muestra solo 15, es como si conservara los repetidos o puede ser problema de los punteros del arreglo?.
  #9 (permalink)  
Antiguo 06/07/2005, 13:01
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Seguramente se este caragando mal, por que si haces:

$tuArray=array(15,13,15);
$myarreglo_limpio = array_unique ($tuArray);

for ($contar=0;$contar<count($myarreglo_limpio);$conta r++)
{
echo $myarreglo_limpio[$contar]."<hr>";
}

Imprime bien 13 y 15.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #10 (permalink)  
Antiguo 06/07/2005, 13:08
Avatar de PabloP  
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 0
Gracias, te pasaste, ahora funcionó, creo que la página con el último cambio no se había actualizado en el servidor porque ahora funciona bien, te pasaste, gracias.
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:01.