Foros del Web » Programando para Internet » PHP »

Mostrar mensaje si se repite un valor n veces en un array

Estas en el tema de Mostrar mensaje si se repite un valor n veces en un array en el foro de PHP en Foros del Web. Me rindo, necesito ayuda. Llevo una semana atrancado y ya no se que hacer con esto. Les explico: Tengo un codigo que admite insertar en ...
  #1 (permalink)  
Antiguo 30/12/2016, 10:00
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Mostrar mensaje si se repite un valor n veces en un array

Me rindo, necesito ayuda.

Llevo una semana atrancado y ya no se que hacer con esto.

Les explico:

Tengo un codigo que admite insertar en un array 12 valores.

y actualmente, me los muestra por pantalla asi:

3==7==2==9
2==6==4==11
12==4==8==1


Mi objetivo final es que si en el array meto un valor que se repita 4 veces consecutivas en alguna de las 3 filas, me diga que hay una coincidencia.

un ejemplo:

3==7==2==9
5==5==5==5
12==4==8==1

echo "Existe una coincidencia!!!";


Este es mi codigo:

Código PHP:
Ver original
  1. $array_madre = array();
  2.  
  3.  
  4.             for( $n=1; $n<=12; $n++ )
  5.              
  6.                 {
  7.                     array_push($array_madre, 3, 7, 2, 9, 5, 5, 5, 5, 12, 4, 8, 1);
  8.                 }
  9.  
  10.  
  11.             foreach($array_madre as $key => $valor)
  12.            
  13.                 {
  14.                     if(($key+1)%4==1)
  15.                    
  16.                         {
  17.                             echo "<br>";
  18.                         }
  19.  
  20.                
  21.                
  22.                     if (($key+1)%4!==0 )
  23.                      
  24.                         {              
  25.                             echo $valor . str_replace("'","","==");  
  26.                         }
  27.                        
  28.                         else
  29.                        
  30.                         {              
  31.                         echo $valor;                                                                       
  32.                         }                  
  33.                 }


Gracias de antemano
  #2 (permalink)  
Antiguo 30/12/2016, 15:23
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Mostrar mensaje si se repite un valor n veces en un array

De nuevo te vuelvo a decir que es más sencillo que como lo pretendes hacer
Código PHP:
Ver original
  1. $array_madre = array();
  2.  
  3.  
  4. for( $n=1; $n<=12; $n++ )
  5.  
  6.     {
  7.         array_push($array_madre, 3, 7, 2, 9, 5, 5, 5, 5, 12, 4, 8, 1);
  8.     }
  9.  
  10.  
  11. $comprobar = array_chunk($array_madre, 4);
  12.  
  13. for ($i = 0; $i < sizeof($comprobar); $i++) {
  14.  
  15.     echo implode("==", $comprobar[$i]);
  16.  
  17.     $cuantos = array_count_values($comprobar[$i]);
  18.     $valores = array_values($cuantos);
  19.  
  20.     for ($j = 0; $j < sizeof($cuantos); $j++) {
  21.  
  22.         if ($valores[$j] == 4) {
  23.  
  24.             echo " --> Existe una coincidencia!!!<br>";
  25.  
  26.         } else if ($j % 3 == 1) {
  27.  
  28.             echo "<br>";
  29.         }
  30.     }
  31. }
  #3 (permalink)  
Antiguo 02/01/2017, 13:35
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: Mostrar mensaje si se repite un valor n veces en un array

mpozo, gracias por la ayuda.

he tardado en contestarte por que he tenido que entender bien, el porqué

de cada linea de tu codigo para aprender bien, tu codigo que me sirve de mucho.

Lo cual te lo agradezco enormemente.

Por otro lado, lo he adaptado un poquillo.

Pero se me presenta un problema.

Basicamente me dice que hay una coincidencia cuando hay cuatro valores iguales consecutivos en una fila, y esto lo hace bien.

Pero... es que tambien me dice que hay coincidencia cuando los 4 valores de una

fila estan vacios.

Y claro esto no puede ser , debe ser cuando existan, valores.

Para variar no consigo implementar esta condicion.

si me echaras una mano con ello ya seria espectacular.

Con todo te pongo el codigo con las ligeras modificaciones mias.

Código PHP:
Ver original
  1. $columnas = 4;
  2.  
  3. $filas = 3;
  4.  
  5.  
  6.     $array_madre = array();
  7.      
  8.      
  9.     for( $n=1; $n<=($columnas*$filas); $n++ )
  10.      
  11.         {
  12.            //array_push($array_madre, 3, 7, 2, 9, 5, 5, 5, 5, 12, 4, 8, 1);
  13.    
  14.          array_push($array_madre, $_POST['jd'.$n]);
  15.         }
  16.      
  17.      
  18.    
  19.     //Dividimos el array_madre en "n" trozos, siendo "n" = numero de $columnas.........................
  20.    
  21.     $comprobar = array_chunk($array_madre, $columnas);
  22.  
  23.  
  24.  
  25.     for ($i = 0; $i < $filas; $i++)
  26.    
  27.         {                    
  28.             echo implode("==", $comprobar[$i]);
  29.  
  30.             $cuantos = array_count_values($comprobar[$i]);
  31.  
  32.             $valores = array_values($cuantos);
  33.  
  34.  
  35.  
  36.             for ( $j = 0; $j < count($cuantos); $j++ )
  37.            
  38.                 {                  
  39.                     if ($valores[$j] == 4)
  40.                    
  41.                         {  
  42.                             echo " --> Existe una coincidencia!!!<br>";    
  43.                         }
  44.  
  45.                         else if ($j % 3 == 1)
  46.                        
  47.                             {                
  48.                                 echo "<br>";
  49.                             }
  50.                 }
  51.                            
  52.         }


Un saludo.
  #4 (permalink)  
Antiguo 02/01/2017, 15:51
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Mostrar mensaje si se repite un valor n veces en un array

Lo primero que se me ocurre es comprobar si alguna de las posiciones de los "sub-array" está vacía. Cambia esta línea
Código PHP:
Ver original
  1. if ($valores[$j] == 4)
por esta otra
Código PHP:
Ver original
  1. if ($valores[$j] == 4 && !empty($comprobar[$i][$j]

Etiquetas: mensaje, repite, valor, veces
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 18:14.