Alguna forma de optimizar esto?
#1
Hola, como dice el titulo estoy intentando optimizar este codigo pero no se me ocurre como, si alguien tiene una idea se lo agradecería mucho.

Código PHP:
new i
    
if(1<=g_level[id]<=50
    
else if(6<=g_level[id]<=101
    
else if(11<=g_level[id]<=152
    
else if(16<=g_level[id]<=203
    
else if(21<=g_level[id]<=254
    
else if(26<=g_level[id]<=305
    
else if(31<=g_level[id]<=356
    
else if(36<=g_level[id]<=407
    
else if(41<=g_level[id]<=45

Muchas gracias.
Responder
#2
Sabemos que cada 5 niveles el "i" aumentara en 1 su valor, iniciando en 0, entonces tenemos una proporción de 1:5 entre el "i" y los niveles, pero como "i" inicia en 0, debemos siempre restar 1 al "i", entonces para igualar la proporción tenemos que dividir el nivel entre 5, con esta operación igualaríamos la proporción 1:1 y quedaría restarle 1 al resultado de la operación, esto en la mayoría de los casos nos dará un número decimal (el cual NO nos sirve, ya que "i" es un valor entero), entonces lo que haremos será hacer un redondeo hacia arriba, y de este modo, realizando estas operaciones tendríamos ese valor de "i" que buscas con tu de if else else lesel selslelselslselslesle.

Código PHP:
new floatround(Float:(g_level[id]/5), floatround_ceil)-
Código PHP:
floatround(valor flotantetipo de redondeo
Código PHP:
La etiqueta Floates pa marcar que el resultado de la operación será un float xd 




Igual si prefirieras podrías hacerlo con un switch y usar los case consecutivos, que es casi lo mismo que lo que hiciste tu, pero creo yo que con menos escribir y más fácil de leer Whatdone
Código PHP:
switch(g_level[id]) 
{
    case 1..5: {
          // En caso de que el valor esté entre 1 y 5 xd
          i 1  
    
// y asi con cada uno jsjsjjs, casi lo mismo que tu if ...elses xD


Obviamente es preferible usar la operación poq es más "automático" jsjs

Espero que esto se haya entendido algo y te sirva  Mario
Estoy cansado de este sufrimiento llamado vivir en Venezuela
Okay
Responder
#3
Muchas gracias, te pasaste, me diste una muy buena idea.
Lo voy a intentar.

PD: Creo que idee una forma, seria la siguiente:

Código PHP:
new = -1
for (new 0<= 45+= 5) {
    
i++
    if (
z-4<=g_level[id]<=z) break


Estaría bien? Insecure
Responder
#4
(25/04/2021, 08:25 AM)iZeus escribió: Muchas gracias, te pasaste, me diste una muy buena idea.
Lo voy a intentar.

PD: Creo que idee una forma, seria la siguiente:

Código PHP:
new = -1
for (new 0<= 45+= 5) {
 
i++
 if (
z-4<=g_level[id]<=z) break


Estaría bien? Insecure

Si, se ve funcional Proud
a excepción de un detalle, debería inicializarse la z en 5, ya que si inicia en 0, la primera vuelta del bucle chequeará si g_level[id] está entre -4 y 0

Código PHP:
new = -1
for (new 5<= 45+= 5) {
 
i++
 if ( (
z-4) <= g_level[id] <= z) break


También podrías hacerlo con un dowhile/while si no supieras la cantidad de niveles que se pueden tener xd
Estoy cansado de este sufrimiento llamado vivir en Venezuela
Okay
Responder
#5
Ahora funciona perfecto, muchas gracias por corregirme.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)