Foros del Web » Programando para Internet » PHP »

Redondear para un periodo

Estas en el tema de Redondear para un periodo en el foro de PHP en Foros del Web. Hola, tengo un array que me llega que puede variar, este corresponde a un perido en meses como por ejemplo (1,3,7,12,24). Y por otro lado ...
  #1 (permalink)  
Antiguo 17/02/2005, 09:26
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 21 años, 10 meses
Puntos: 6
Exclamación Redondear para un periodo

Hola, tengo un array que me llega que puede variar, este corresponde a un perido en meses como por ejemplo (1,3,7,12,24).
Y por otro lado saco de la base una cuenta donde el periodo esta entre el 1 y el 24 (un rango entre el minimo y maximo del array). Los valores que puedo recuperar pueden ser 1,3,etc, asi como los que estan en el medio como 2,5,10,13,17,21,etc.
Mi pregunta es como hago para saber que valor meter en que periodo. Obviamente si no seria dinamico podria decir que 2 entra en 3 (si es la mitad va al mayor), 5 en 7, 10 y 13 en 12, 17 y 21 en 24.

Muchas Gracias....necesito esto urgente!!
  #2 (permalink)  
Antiguo 17/02/2005, 09:34
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,
Cita:
10 y 13 en 12
¿Es correcto eso? ¿13 no tendria que ir en 24? Si es en 24, lo que quieres es sacar el menor mayor. Si el array de periodos esta ordenado de menor a mayor, solo es ir recorriendo es array en orden hasta encontrar el primero que sea mayor. Algo como:
Código PHP:
function calcularPeriodo($periodos$valor) {
  foreach (
$periodos as $periodo) {
    if (
$periodo>$valor) {
      return 
$periodo// quizas un break estaria mejor para los que no les gusta un return en medio de la funcion
    
}
  }
  return -
1// cuando el valor es mayor que todos los valores del array
}

$periodos=array(1,3,7,12,24);
$valor=5;
echo 
calcularPeriodo($periodos,$valor); 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 17/02/2005 a las 09:36
  #3 (permalink)  
Antiguo 17/02/2005, 09:43
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 21 años, 10 meses
Puntos: 6
No....

La idea es ubicar el periodo:

si es la mitad entre uno y otro, al mayor.
si es menor que la mitad entre uno y otro, al menor,
si es mayor que la mitad entre uno y otro, al mayor,

Ahi es donde no se como ubicarlo.
Gracias
  #4 (permalink)  
Antiguo 17/02/2005, 16:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Vale:
Código PHP:
function calcularPeriodo($periodos$valor) {
  for (
$i=1;$i<count($periodos);$i++) {
    
$mid=($periodos[$i]-$periodos[$i-1])/2;
    if (
$valor>=$periodos[$i-1] && $valor<($periodos[$i-1]+$mid)) {
      return 
$periodos[$i-1]; // quizas un break estaria mejor para los que no les gusta un return en medio de la funcion
    
} elseif ($valor>=($periodos[$i-1]+$mid) && $valor<=$periodos[$i]) {
      return 
$periodos[$i];
    }
  }
  return -
1// cuando el valor es mayor que todos los valores del array

Mas o menos asi.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:44.