Estoy haciendo un sitio que determina el valor de una matriz en función de la hora que sea. Escribí este guión horrible (funcional), y me pregunto si podría haberlo hecho más conciso. Comencé con una declaración de caso/cambio, pero tuve problemas para obtener múltiples condicionales trabajando con ella. Aquí está el trabajo sucio:Acabo de escribir una función PHP horrible, necesito un poco de ayuda (elseif chain-switch?)
if ($now < november 18th) {
$array_to_use = $home;
}
elseif (november 18th < $now && $now < november 21st) {
$array_to_use = $driving;
}
elseif (november 21st < $now && $now < november 22nd) {
$array_to_use = $flying;
}
...
...
...
elseif (february 1st < $now) {
$array_to_use = $arrived;
}
else {
$array_to_use = $default;
}
El horario es de hecho más complicado y tiene 13 elseif
declaraciones en el mismo. ¿Alguien puede confirmar que acabo de bloquear el codificador y que hay una forma mejor de hacerlo?
EDIT: he cambiado el Unix marcas de tiempo a los tiempos reales difíciles, por lo que es más fácil de entender lo que estoy haciendo (con suerte)
EDIT 2: Por favor, perdona el reloj Javascript Actualmente roto, pero esto es el sitio en el que estoy trabajando:
Cada matriz se basa en mi ubicación, y hay 15 "actualmente" en función de la hora. Es un dominio de problemas pequeños con tiempos de inicio/finalización conocidos, por lo que la flexibilidad no es la clave, simplemente escribir todo. Puede ver cómo el tiempo es continuo, y solo se necesita seleccionar una matriz de cadenas a la vez.
¿Hay cálculos matemáticos para las marcas de tiempo elegidas? –
Hay matemáticas, sí. $ ahora se divide y redondea unas pocas veces –
¿Cuántas condiciones? ¿Se superponen, o cada condición es exclusiva? –