Foros del Web » Programando para Internet » PHP »

forma de ver el valor repetido mas veces y consecutivo que hay en un array

Estas en el tema de forma de ver el valor repetido mas veces y consecutivo que hay en un array en el foro de PHP en Foros del Web. Hola amigas/os, a ver una duda un poco retorcida pero que no se como hacerlo. ¿Hay alguna forma de ver el valor repetido mas veces ...
  #1 (permalink)  
Antiguo 11/02/2017, 05:49
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 7 meses
Puntos: 5
forma de ver el valor repetido mas veces y consecutivo que hay en un array

Hola amigas/os, a ver una duda un poco retorcida pero que no se como hacerlo.

¿Hay alguna forma de ver el valor repetido mas veces y consecutivo

que hay en un array?

Es que la unica funcion que se me viene a la cabeza es:


Por ejemplo: un array que tenga:

array[x, o, x, x, x, x, o, x, x, x]

pues una funcion, o algo, que me dijera que la coincidencia mayor es la de 'x' y se repite 4 veces.

Última edición por mensajeescrito; 11/02/2017 a las 05:57
  #2 (permalink)  
Antiguo 12/02/2017, 15:06
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años, 1 mes
Puntos: 86
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Se me ocurre usar strcasecmp()
Código PHP:
Ver original
  1. <?php
  2. $origen = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","tigre","tigre","tigre","gato","elefante","gato","perro");
  3. $temp = $origen[0];
  4. $repetidos = Array();
  5. $x = 1;
  6.  
  7. for ($i = 1; $i < count($origen); $i++) {
  8.  
  9.     $actual = strcasecmp($temp, $origen[$i]);
  10. echo $temp . "<br>";
  11.     if ($actual == 0) {
  12.  
  13.         $repetidos[$origen[$i]] = ++$x;
  14.  
  15.     } else {
  16.  
  17.         $x = 1;
  18.     }
  19.  
  20.     $temp = $origen[$i];
  21. }          
  22.  
  23. arsort($repetidos);
  24. $llave = array_keys($repetidos);
  25. $valor = array_values($repetidos);
  26.  
  27. echo "El elemento " .ucwords($llave[0]). " se repite " .$valor[0].  " veces consecutivas";
  28. ?>
  #3 (permalink)  
Antiguo 12/02/2017, 17:59
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 10 años, 5 meses
Puntos: 30
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

En google se encuentra todo, y lo que realmente cuesta encontrar es lo que hay que preguntar ya, siempre hay alguien que ya lo ha hecho.

Código PHP:
function contarValoresArray($array)
{
    
$contar=array();
 
    foreach(
$array as $value)
    {
        if(isset(
$contar[$value]))
        {
            
// si ya existe, le añadimos uno
            
$contar[$value]+=1;
        }else{
            
// si no existe lo añadimos al array
            
$contar[$value]=1;
        }
    }
    return 
$contar;

Un saludo
  #4 (permalink)  
Antiguo 14/02/2017, 03:52
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

mpozo, simplemente perfecto tu codigo me va al pelo.

Me ha costado entender la logica del mismo pero ya lo he entendo.

Pasada esta fase de entender el codigo, me asaltó una duda.

¿Y si en dicho array el valor que mas se repite fuera un digamos un espacio en blanco?

es decir algo como esto:

Código PHP:
Ver original
  1. Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro");


para ello pensé que podria usar esta funcion: array_filter();

y efectivamente me muestra los valores omitiendo los valores vacios y respetando

tambien su valor de clave en el array.

es decir que si se borra un valor vacio , los valores anteriores y posteriores a este,

deben mantener su valor de clave correspondiente en el array.

Pero el problema es que no consigo implementar bien el array_filter en el codigo que has puesto, estoy a las puertas pero no termino de conseguirlo.

una manita, please
  #5 (permalink)  
Antiguo 14/02/2017, 05:24
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Dicho de otro modo en este array con valores de espacios vacios. deberia

seguir mostrando que el valor que mas se repite es del de "oso" con 4 repeticiones.

osea ignorando al valor vacio con 5 repeticiones.
  #6 (permalink)  
Antiguo 14/02/2017, 09:50
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Bueno mpozo, creo que lo he conseguido yo. Y funcionar funciona.

Pero como tu eres el padre de la criatura, no se si se te ocurrira una forma mejor que

la mia, mira como he resuelto yo:


Código PHP:
Ver original
  1. $array_madre = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro");
  2.  
  3.     $temp = $array_madre[0];
  4.     $repetidos = Array();
  5.     $x = 1;
  6.      
  7.      
  8.    
  9.     for ($i = 1; $i < count($array_madre); $i++)
  10.    
  11.         {        
  12.             $actual = strcasecmp($temp, $array_madre[$i]);
  13.            
  14.             echo $temp . "<br>";
  15.            
  16.            
  17.                 if ( ($actual == 0) && ($array_madre[$i] != '') )
  18.                    
  19.                     {  
  20.                         $repetidos[$array_madre[$i]] = ++$x;
  21.                     }
  22.                    
  23.                     else
  24.                    
  25.                     {            
  26.                         $x = 1;
  27.                     }
  28.                  
  29.                     $temp = $array_madre[$i];          
  30.         }          
  31.  
  32.    
  33.     arsort($repetidos);
  34.     $llave = array_keys($repetidos);
  35.     $valor = array_values($repetidos);
  36.  
  37.  
  38.  
  39.     echo "<span style='color:#ff0000;'><b>El elemento " .ucwords($llave[0]). " se repite " .$valor[0].  " veces consecutivas</b></span>";
  #7 (permalink)  
Antiguo 14/02/2017, 11:41
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Cita:
Iniciado por mensajeescrito Ver Mensaje
Bueno mpozo, creo que lo he conseguido yo. Y funcionar funciona.

Pero como tu eres el padre de la criatura, no se si se te ocurrira una forma mejor que

la mia, mira como he resuelto yo:


Código PHP:
Ver original
  1. $array_madre = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro");
  2.  
  3.     $temp = $array_madre[0];
  4.     $repetidos = Array();
  5.     $x = 1;
  6.      
  7.      
  8.    
  9.     for ($i = 1; $i < count($array_madre); $i++)
  10.    
  11.         {        
  12.             $actual = strcasecmp($temp, $array_madre[$i]);
  13.            
  14.             echo $temp . "<br>";
  15.            
  16.            
  17.                 if ( ($actual == 0) && ($array_madre[$i] != '') )
  18.                    
  19.                     {  
  20.                         $repetidos[$array_madre[$i]] = ++$x;
  21.                     }
  22.                    
  23.                     else
  24.                    
  25.                     {            
  26.                         $x = 1;
  27.                     }
  28.                  
  29.                     $temp = $array_madre[$i];          
  30.         }          
  31.  
  32.    
  33.     arsort($repetidos);
  34.     $llave = array_keys($repetidos);
  35.     $valor = array_values($repetidos);
  36.  
  37.  
  38.  
  39.     echo "<span style='color:#ff0000;'><b>El elemento " .ucwords($llave[0]). " se repite " .$valor[0].  " veces consecutivas</b></span>";
Tu solución falla con esta 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');
  2. // imrpime El elemento X se repite 2 veces consecutivas
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #8 (permalink)  
Antiguo 14/02/2017, 12:32
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 10 años, 5 meses
Puntos: 30
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

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');
  2. // imrpime El elemento X se repite 2 veces consecutivas

Con la solución que yo dí, no falla y además que no cuenta los espacios en blanco.

Código PHP:

$array_madre1 
= Array('x''a''x''x','b''x''x''x''c''x''x''x''x''d''x''x');
$array_madre2 = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro");
 
function 
contarValoresArray($array

    
$contar=array(); 
  
    foreach(
$array as $value
    {     
    if(empty(
$value))
        continue;
        
        if(isset(
$contar[$value])) 
        { 
            
// si ya existe, le añadimos uno 
            
$contar[$value]+=1
        }else{ 
            
// si no existe lo añadimos al array 
            
$contar[$value]=1
        } 
    } 
    return 
$contar


print_r(contarValoresArray($array_madre1));
print_r(contarValoresArray($array_madre2)); 
  #9 (permalink)  
Antiguo 14/02/2017, 13:54
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Cita:
Iniciado por Triby2 Ver Mensaje
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');
  2. // imrpime El elemento X se repite 2 veces consecutivas

Con la solución que yo dí, no falla y además que no cuenta los espacios en blanco.

Código PHP:

$array_madre1 
= Array('x''a''x''x','b''x''x''x''c''x''x''x''x''d''x''x');
$array_madre2 = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro");
 
function 
contarValoresArray($array

    
$contar=array(); 
  
    foreach(
$array as $value
    {     
    if(empty(
$value))
        continue;
        
        if(isset(
$contar[$value])) 
        { 
            
// si ya existe, le añadimos uno 
            
$contar[$value]+=1
        }else{ 
            
// si no existe lo añadimos al array 
            
$contar[$value]=1
        } 
    } 
    return 
$contar


print_r(contarValoresArray($array_madre1));
print_r(contarValoresArray($array_madre2)); 
Tu solución solo cuenta cuantas veces aparece de forma repetida un elemento dentro del arreglo, pero no te dice cuantas veces se repite de forma consecutiva dicho elemento y cual fue la mayor de esas coincidencias.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #10 (permalink)  
Antiguo 14/02/2017, 15:04
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años, 1 mes
Puntos: 86
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Cita:
Iniciado por mensajeescrito Ver Mensaje
[....]
para ello pensé que podria usar esta funcion: array_filter();
[....]
Ibas bien encaminado
Código PHP:
Ver original
  1. $array_madre = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro");
  2. $origen = array_filter($array_madre);
  3. $temp = $origen[0];
  4. $repetidos = Array();
  5. $x = 1;
  6.  
  7.  
  8. foreach ($origen as $valor) {
  9.  
  10.     $actual = strcasecmp($temp, $valor);
  11. echo $temp . "<br>";
  12.     if ($actual == 0) {
  13.  
  14.         $repetidos[$valor] = ++$x;
  15.  
  16.     } else {
  17.  
  18.         $x = 1;
  19.     }
  20.  
  21.     $temp = $valor;
  22. }
  23.  
  24.  
  25. arsort($repetidos);
  26. $llave = array_keys($repetidos);
  27. $valor = array_values($repetidos);
  28.  
  29. echo "El elemento " .ucwords($llave[0]). " se repite " .$valor[0].  " veces consecutivas";
  #11 (permalink)  
Antiguo 14/02/2017, 15:51
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Aun con el array_filer sigue el código no hace lo que pidieron
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #12 (permalink)  
Antiguo 14/02/2017, 16:47
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años, 1 mes
Puntos: 86
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Cita:
Iniciado por hhs Ver Mensaje
Aun con el array_filer sigue el código no hace lo que pidieron
No aportas mucho, aparte de decir no funciona
Código PHP:
Ver original
  1. $array_madre = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro","oso","oso");
  2. $origen = array_filter($array_madre);
  3. $temp = null;
  4. $repetidos = Array();
  5. $x = 1;
  6.  
  7.  
  8. foreach ($origen as $valor) {
  9.  
  10.     $actual = strcasecmp($temp, $valor);
  11. echo $valor . "<br>";
  12.     if ($actual == 0) {
  13.  
  14.         array_push($repetidos, Array($valor => ++$x));
  15.  
  16.     } else {
  17.  
  18.         $x = 1;
  19.     }
  20.  
  21.     $temp = $valor;
  22. }
  23.  
  24.  
  25. rsort($repetidos);
  26. $llave = array_keys($repetidos[0]);
  27. $valor = array_values($repetidos[0]);
  28.  
  29. echo "El elemento " .ucwords($llave[0]). " se repite " .$valor[0].  " veces consecutivas";
  #13 (permalink)  
Antiguo 14/02/2017, 18:09
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

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');
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #14 (permalink)  
Antiguo 15/02/2017, 06:33
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 10 años, 5 meses
Puntos: 30
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Esto es lo más cercano que he llegado a lo que tu quieres,

Código PHP:
$array_madre = Array("oso","perro","león","gato","tigre","tigre","perro","perro","perro","león","oso","oso","oso","oso","","","","","","tigre","tigre","tigre","gato","elefante","gato","perro"); 

function 
contarValoresArray($array)  
{  
    
$ultimo '';
    
$contador 0;
    
$consecutivos 1;
    
//$flag = false;
    
$contar = array();  
   
    foreach(
$array as $value) {
        if(empty(
$value)) 
            continue;
        
         
        if(isset(
$contar[$value])) {
            
# Sumo valor repetido
            
$contar[$value]['repeticiones']++;  
            
            if(
$value == $ultimo) {
                
$consecutivos++;
                
//$flag = true;
                
                
if($consecutivos &&isset($contar[$value]['consecutivos'][0])) {
                    
$contador++;
                } else {
                    
$contar[$value]['consecutivos'][$contador] = $consecutivos;
                    
$flag false;
                }
            } else
                
//if($flag == false)
                    
$consecutivos 1;    
            
        } else {  
            
$contar[$value]['repeticiones'] = 1;  
        }
                
        
$ultimo $value;
    }  
    return 
$contar;  
}  

echo 
"<pre>";
print_r(contarValoresArray($array_madre)); 
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.
  #15 (permalink)  
Antiguo 15/02/2017, 14:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Lógicamente, no lo he probado, es solo pseudocódigo, pero creo que es lo que se busca.

Código:
maximos = array()
item = anterior = '';
maximo = 0;
contador = 0

foreach(array_madre as value) {
    if(anterior != value) {
        // No contar los valores vacios, pero sí reiniciar contador
        if(anterior != '') {
            if(!isset(maximos[anterior]) || maximos[anterior] < contador) {
                maximos[anterior] = contador
                if(item == '' || maximo < contador) {
                     item = anterior
                     maximo = contador
                }
            }
        }
        anterior = value
        contador = 0
    }
    contador ++
}

echo 'Elementos que má se repite consecutivamente: ' . item
echo '<br>Repeticiones: ' . maximo
__________________
- León, Guanajuato
- GV-Foto
  #16 (permalink)  
Antiguo 16/02/2017, 16:28
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años, 1 mes
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. ?>
  #17 (permalink)  
Antiguo 19/02/2017, 09:31
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: forma de ver el valor repetido mas veces y consecutivo que hay en un arr

Disculpad la tardanza en responder, he tenido que probar y recomprobar cada una de

vuestras códigos, previamente intentando entenderlos antes de implemetarlos.

Ante todo gracias a todos, mpozo, triby2, y hhs por vuestra paciencia, y ayuda.

Al final lo he solucionao con vuestros códigos.

Ha sio lioso pero me habéis ayudado muchísimo.

Muchas gracias a todos
  #18 (permalink)  
Antiguo 02/03/2017, 10:08
Avatar de 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

Etiquetas: consecutivo, forma, repetido, 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 06:54.