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 originalfunction mayor_valor_consecutivo($array) {
$temp_array = $array;
array_walk($array, function($v, $k) use (&$temp_array, &$datos_array) { foreach ($temp_array as $k2 => $v2) {
if ($v2 !== $v) break;
if(isset($datos_array[$k])) { $datos_array[$k]++;
} else {
$datos_array[$k] = 1;
}
}
});
$mayor_consecutivo = array('valor' => $array[$pos], 'repeticiones' => $datos_array[$pos], 'posicion' => $pos); return $mayor_consecutivo;
}
Uso:
Código PHP:
Ver original$array = array('x', 'a', 'x', 'x','b', 'x', 'x', 'x', 'c', 'x', 'x', 'x', 'x', 'd', 'x', 'x'); print_r(mayor_valor_consecutivo
($array));
Retorna un array con la siguiente estructura:
Código PHP:
Ver original(
[valor] => x
[repeticiones] => 4
[posicion] => 9
)
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$array = array('x', 'a', 'x', 'x','b', 'x', 'x', 'x', 'c', 'x', 'x', 'x', 'x', 'd', 'x', 'x');
$mayor_valor_consecutivo = mayor_valor_consecutivo($array);
echo "El elemento que mas repeticiones consecutivas tiene es '{$mayor_valor_consecutivo['valor']}'.\n";
echo "El numero de repeticiones consecutivas de este son {$mayor_valor_consecutivo['repeticiones']}.\n";
echo "Las repeticiones consecutivas del mismo inician en la posicion {$mayor_valor_consecutivo['posicion']} del array original.";
Código PHP:
Ver originalEl elemento que mas repeticiones consecutivas tiene es 'x'.
El numero de repeticiones consecutivas de este son 4.
Las repeticiones consecutivas del mismo inician en la posicion
9 del
array original
.