Ver Mensaje Individual
  #16 (permalink)  
Antiguo 16/02/2017, 16:28
mpozo
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Cita:
Iniciado por hhs Ver Mensaje
Si perdon lo olvideee!, este es el arreglo con el que falla la prueba
Código PHP:
Ver original
  1. $array_madre = Array('x', 'a', 'x', 'x','b', 'x', 'x', 'x', 'c', 'x', 'x', 'x', 'x', 'd', 'x', 'x');
¿Probaste el código que dejé anteriormente?

Cita:
Iniciado por Triby2 Ver Mensaje
Esto es lo más cercano que he llegado a lo que tu quieres,

[....]

A partir de aquí te recomiendo que sigas esa lógica mentalmente con tu array y descubras que le falta, esto cuenta las veces que se repite consecutivamente un mismo elemento pero si hay otra repetición consecutiva no la cuenta. Con esto tienes el 99% hecho.
Creo que esto resuelve todos los problemas
Código PHP:
Ver original
  1. <?php
  2. $array_madre = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","tigre","gato","elefante","gato","perro","oso","oso");
  3. $origen = array_filter($array_madre); // Quitamos los elemenos vacios o nulos
  4. $temp = null;
  5. $repetidos = Array();
  6. $x = 1;
  7.  
  8.  
  9. foreach ($origen as $valor) {
  10.  
  11.     $comparacion = strcasecmp($temp, $valor);
  12. echo $valor . "<br>";
  13.     if ($comparacion == 0) { // Es igual el valor anterior y el actual
  14.  
  15.         ++$x;  
  16.  
  17.     } else {
  18.  
  19.         if ($x > 1) {
  20.  
  21.             $repetidos[$x][$temp] = $x; // Llenamos el array con las key (repetidas) y la cantidad de repeticiones consecutiva
  22.         }
  23.  
  24.         $x = 1;
  25.  
  26.     }
  27.  
  28.     $temp = $valor;
  29. }
  30. $repetidos[$x][$temp] = $x; // Por si hay repetición al final del array
  31.  
  32. krsort($repetidos); // Lo ordenamos por su key (de mayor a menor)
  33.  
  34.  
  35. echo "Los elementos ";
  36. foreach($repetidos as $key => $value) {
  37.    
  38.     echo ucwords(implode(", ", array_keys($repetidos[$key]))) . " se repiten " . $key . " veces consecutivamente";
  39. break;
  40. }
  41. ?>