Ver Mensaje Individual
  #18 (permalink)  
Antiguo 02/03/2017, 10:08
Avatar de kip13
kip13
 
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Quizas esta funcion ayude a lograr lo que necesitas, solo retorna el valor con mayor repeticiones consecutivas, si existen mas valores con la misma cantidad retorna solo en orden el primero de este con respecto a como esta posicionado en el array, es posible retornar todos los que tienen la misma cantidad mayor de repeticiones consecutivas habria que modificar ciertas lineas en la funcion, luego vere si modifico aquello, quizas alguno lo haga y lo publique!:

Código PHP:
Ver original
  1. function mayor_valor_consecutivo($array) {
  2.     $array = array_filter($array);
  3.     $datos_array =array();
  4.     $temp_array = $array;
  5.     array_walk($array, function($v, $k) use (&$temp_array, &$datos_array) {
  6.         foreach ($temp_array as $k2 => $v2) {
  7.             if ($v2 !== $v) break;
  8.             if(isset($datos_array[$k])) {
  9.                 $datos_array[$k]++;
  10.             } else {
  11.                 $datos_array[$k] = 1;
  12.             }
  13.             unset($temp_array[$k2]);
  14.         }
  15.     });
  16.     $pos = array_search(max($datos_array), $datos_array);
  17.     $mayor_consecutivo = array('valor' => $array[$pos], 'repeticiones' => $datos_array[$pos], 'posicion' => $pos);
  18.     return $mayor_consecutivo;
  19. }

Uso:

Código PHP:
Ver original
  1. $array = array('x', 'a', 'x', 'x','b', 'x', 'x', 'x', 'c', 'x', 'x', 'x', 'x', 'd', 'x', 'x');
  2. print_r(mayor_valor_consecutivo($array));

Retorna un array con la siguiente estructura:

Código PHP:
Ver original
  1. (
  2.     [valor] => x
  3.     [repeticiones] => 4
  4.     [posicion] => 9
  5. )

El valor con mayor repeticiones consecutivas seria 'x', el numero de repeticiones de este son 4 y la posicion donde inicia las repeticiones consecutivas de este valor en el array original es la 9.

Entonces:

Código PHP:
Ver original
  1. $array = array('x', 'a', 'x', 'x','b', 'x', 'x', 'x', 'c', 'x', 'x', 'x', 'x', 'd', 'x', 'x');
  2.  
  3. $mayor_valor_consecutivo = mayor_valor_consecutivo($array);
  4.  
  5. echo "El elemento que mas repeticiones consecutivas tiene es '{$mayor_valor_consecutivo['valor']}'.\n";
  6. echo "El numero de repeticiones consecutivas de este son {$mayor_valor_consecutivo['repeticiones']}.\n";
  7. echo "Las repeticiones consecutivas del mismo inician en la posicion {$mayor_valor_consecutivo['posicion']} del array original.";

Código PHP:
Ver original
  1. El elemento que mas repeticiones consecutivas tiene es 'x'.
  2. El numero de repeticiones consecutivas de este son 4.
  3. Las repeticiones consecutivas del mismo inician en la posicion 9 del array original.

Última edición por kip13; 02/03/2017 a las 10:14