Foros del Web » Programando para Internet » PHP »

Elementos repetidos en un array marcandolos con rojo

Estas en el tema de Elementos repetidos en un array marcandolos con rojo en el foro de PHP en Foros del Web. Hola que tal!! Miren tengo esta duda que me esta rompiendo la cabeza... tengo que realizar en mi sistema una opcion que tome todos los ...
  #1 (permalink)  
Antiguo 30/09/2010, 23:18
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 2 meses
Puntos: 9
Exclamación Elementos repetidos en un array marcandolos con rojo

Hola que tal!!
Miren tengo esta duda que me esta rompiendo la cabeza... tengo que realizar en mi sistema una opcion que tome todos los campos introducidos en X cantidad de textbox y mostrar todos los datos introducidos en el mismo orden, pero marcando con rojo los numeros repetidos... ejemplo:

111
111
222
333
444
111
666
444

Se que existe la funcion: array_count_values ya que la use para señalar el numero y la cantidad de veces que se reptio dicho numero, el problema es que te arroja los numeros repetidos sin el orden en que se ingreso.. ejemplo:

111
111
222
333
444
111
666
444

El resultado que te arroja es:

111 reptio: 3 veces
222 reptio: 1 vez
333 reptio: 1 vez
444 reptio: 2 veces
666 reptio: 1 vez

Pero si se dan cuenta el 111 se repitio en diferentes lados del array ... :S


$new_array=array_count_values($array);
echo "Se repitieron los siguientes valores: <br><br>";
while (list ($key, $val) = each ($new_array)) {

if($val>=2){
if($key!=NULL){
echo "<font color='red'> ". $key ."</font> -> <font color='blue'>". $val." Veces</font><br>";
}//if si es mayor a 2 muestra repetidos
}//if que no muestre repeticion de los null
}//while

Entoces mi duda es como hago para que me muestre el orden tal cual de mis datos y que me marque con rojo los repetidos... eh tratado con una tabla temporal en mysql, pero dentro del while le sigue un for para señalar los datos del array y me reptie los datos varias veces... asi:

/////////// CREAR TABLA TEMPORARL

mysql_query("CREATE TEMPORARY TABLE temp (
`numrep` int(6) NOT NULL,
PRIMARY KEY (`numrep`)
) ",$conexion);
###### Probando ingreso de datos
mysql_query("INSERT INTO temp (numrep)". "VALUES ( ". $key ." );",$conexion);
$query=mysql_query("SELECT * FROM temp",$conexion);
$row=mysql_fetch_array($query);
//while ($row=mysql_fetch_array($query))
//{

--> aqui va el for donde desgloza los datos del array y el while para sacar los datos que se repitieron y se almacenaron..
el problema es que como hay un while todo el contenido del for me lo repite la cantidad de veces que tiene los datos en la base de datos temporal.. un choriso :S

//}//while

AYUDAAA!!!
  #2 (permalink)  
Antiguo 01/10/2010, 01:51
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Elementos repetidos en un array marcandolos con rojo

Hola
bueno, pues no se, me suena más a problema de obtener los datos,
pero pues prueba con esto

Código PHP:
Ver original
  1. <pre><?php
  2.       $test = preg_split('/\s+\b/', '111 222 111 111 222 333 111');
  3.       print_r(array_count_values($test));
  4.       ?></pre>

obteniendo

Código code:
Ver original
  1. Array (     [111] => 4     [222] => 2     [333] => 1 )

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 01/10/2010, 16:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 2 meses
Puntos: 9
Respuesta: Elementos repetidos en un array marcandolos con rojo

Cita:
Iniciado por mortiprogramador Ver Mensaje
Hola
bueno, pues no se, me suena más a problema de obtener los datos,
pero pues prueba con esto

Código PHP:
Ver original
  1. <pre><?php
  2.       $test = preg_split('/\s+\b/', '111 222 111 111 222 333 111');
  3.       print_r(array_count_values($test));
  4.       ?></pre>

obteniendo

Código code:
Ver original
  1. Array (     [111] => 4     [222] => 2     [333] => 1 )

saludos
Jjeje asi es compadre, eso es lo que te mencionaba que yo hacia... pero muchas gracias! ya lo solucione tipo dr. house , mientras veia a los mr olympia se me prendio el foco jajaja... el se resuelve asi:

for($i=1;$i<=$_POST["cantidad"];$i++){
$retoma[$i]=$_POST["campo$i"];
}
$new_array=array_count_values($array);
echo "Se repitieron los siguientes valores: <br><br>";
while (list ($key, $val) = each ($new_array)) {
//echo "$key -> $val <br>";

if($val>=2){

if($key!=NULL){
echo "<font color='red'> ". $key ."</font> -> <font color='blue'>". $val." Veces</font><br>";



for($i=1;$i<=$_POST["cantidad"];$i++){
if($retoma[$i]!="--".$key."--"){

if($retoma[$i]==$key){
$retoma[$i]="--".$key."--";
}
}

}

}

Y gualaaaa!!!!

el resultado sale como por arte de magia:


echo "<b>Los datos ingresados fueron: </b><br><br>";
for($j=1;$j<=$_POST["cantidad"];$j++){
if($retoma[$j]==NULL){
echo " -------- ";
}
echo $retoma[$j]."<br>";
}

Ya si los quieren marcar con un color en espesifico pues es lo de menos, ya de ahi es facil jaja

Última edición por marco64yes; 01/10/2010 a las 16:38
  #4 (permalink)  
Antiguo 01/10/2010, 17:15
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Elementos repetidos en un array marcandolos con rojo

mr olympia? en que capitulo de dr house?
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 01/10/2010, 21:21
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 15 años
Puntos: 7
Respuesta: Elementos repetidos en un array marcandolos con rojo

Yo si la cosa no es tan grave agarraría y ya con la informacion de los repetidos, recorro el original verfico si es el mismo repertido y pinto... y punto y fin...
  #6 (permalink)  
Antiguo 01/10/2010, 21:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 2 meses
Puntos: 9
Respuesta: Elementos repetidos en un array marcandolos con rojo

Cita:
Iniciado por egepe Ver Mensaje
Yo si la cosa no es tan grave agarraría y ya con la informacion de los repetidos, recorro el original verfico si es el mismo repertido y pinto... y punto y fin...
Si lo haces, solo te marcara siempre el pimero dato que encuentra.. mas no los otros repetidos
  #7 (permalink)  
Antiguo 01/10/2010, 21:51
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 15 años
Puntos: 7
Respuesta: Elementos repetidos en un array marcandolos con rojo

tu duda es de php o VB ( lo digo porque dices textbox) ?

no vale si es en php sería algo así.

1)Yo stoy suponiendo por lo que colocaste al comienzo que te está cargando esos datos?
2)Que tu debes mostrarlos luego de aceptados ? xq si los quieres dinámicos en la medida en que te los cargan es un poquito más elaborado y debería manejar javascript y ajax...

Bueno si 1 y 2 son ciertas. Nada me dices q por la funcion array_count_values ya sabes el número de vcs que se repiten, bueno listo. Si tienes los datos en un $_POST ó $_GET, vas comparando uno a uno y pintando, me explico tu caso de arriba;

111
111

222
333
444
111
666
444

y tienes este resultado:

111 reptio: 3 veces
222 reptio: 1 vez
333 reptio: 1 vez
444 reptio: 2 veces
666 reptio: 1 vez

guarda este resultado en un array como más te guste referencial o numérico,
$repite[0][0]=111; $repite[0][1]=3;
$repite[1][0]=222; $repite[1][1]=1;
$repite[2][0]=333; $repite[2][1]=1;
$repite[3][0]=444; $repite[3][1]=2;
$repite[4][0]=666; $repite[4][1]=1;


Vas de tu global $_POST o $_GET a buscar el igual en este array (por eso te dije que si quería usabas referencial para hacer más rapido) y en la medida encuentres los que se repiten los pintas... con echo o si los tienes que mostrar en otro form nada los pones en el value="<?php echo $valor_pintado?>" readonly=readonly....

espero que te sirva esta vez y disculpa la respuesta corta de antes....

saludos
  #8 (permalink)  
Antiguo 01/10/2010, 22:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 2 meses
Puntos: 9
Respuesta: Elementos repetidos en un array marcandolos con rojo

Cita:
Iniciado por egepe Ver Mensaje
tu duda es de php o VB ( lo digo porque dices textbox) ?

no vale si es en php sería algo así.

1)Yo stoy suponiendo por lo que colocaste al comienzo que te está cargando esos datos?
2)Que tu debes mostrarlos luego de aceptados ? xq si los quieres dinámicos en la medida en que te los cargan es un poquito más elaborado y debería manejar javascript y ajax...

Bueno si 1 y 2 son ciertas. Nada me dices q por la funcion array_count_values ya sabes el número de vcs que se repiten, bueno listo. Si tienes los datos en un $_POST ó $_GET, vas comparando uno a uno y pintando, me explico tu caso de arriba;

111
111

222
333
444
111
666
444

y tienes este resultado:

111 reptio: 3 veces
222 reptio: 1 vez
333 reptio: 1 vez
444 reptio: 2 veces
666 reptio: 1 vez

guarda este resultado en un array como más te guste referencial o numérico,
$repite[0][0]=111; $repite[0][1]=3;
$repite[1][0]=222; $repite[1][1]=1;
$repite[2][0]=333; $repite[2][1]=1;
$repite[3][0]=444; $repite[3][1]=2;
$repite[4][0]=666; $repite[4][1]=1;


Vas de tu global $_POST o $_GET a buscar el igual en este array (por eso te dije que si quería usabas referencial para hacer más rapido) y en la medida encuentres los que se repiten los pintas... con echo o si los tienes que mostrar en otro form nada los pones en el value="<?php echo $valor_pintado?>" readonly=readonly....

espero que te sirva esta vez y disculpa la respuesta corta de antes....

saludos
Suena bien man ...
Pero aqui solo uso esto

for($i=1;$i<=$_POST["cantidad"];$i++){
if($retoma[$i]!="<font color='red'>".$key."</font>){

if($retoma[$i]==$key){
$retoma[$i]="<font color='red'>".$key."</font>";
}
}

}

y me hace todo jejeje , meta los datos que quiera de los n textbox dinamicos que quiera crear ,pero bueno como para todo hay muchas soluciones .. saludos
  #9 (permalink)  
Antiguo 01/10/2010, 22:58
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 15 años
Puntos: 7
Respuesta: Elementos repetidos en un array marcandolos con rojo

BUeno me alegro por ti siempre hay más de una forma de resolver algo eso es verdad, por eso cuando estaba en la facultad los profesiones te decías de ellos podían saber perfectamente quién se copio de quién xq es practicamente imposible dos resoluciones de problemas iguales. A menos claro que hayan estudiado juntos la noche anterior jajajajaj :-x

Etiquetas: elementos, repetidos, rojo
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 04:15.