Foros del Web » Programando para Internet » PHP »

IF o SWITCH CASE

Estas en el tema de IF o SWITCH CASE en el foro de PHP en Foros del Web. Hola, En caso de tener por ejemplo una condición que puede ser del 1 al 10, que es mas rápido, usar if ($variable == 1) ...
  #1 (permalink)  
Antiguo 20/05/2010, 20:23
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 9 meses
Puntos: 3
IF o SWITCH CASE

Hola,

En caso de tener por ejemplo una condición que puede ser del 1 al 10, que es mas rápido, usar

if ($variable == 1) {}
if ($variable == 2) {}
if ($variable == 3) {}
if ($variable == 4) {}
if ($variable == 5) {}
if ($variable == 6) {}
if ($variable == 7) {}
if ($variable == 8) {}
if ($variable == 9) {}
if ($variable == 10) {}

o me conviene usar un

switch ($variable)
case 1
...
case 2
...
etc etc

??
  #2 (permalink)  
Antiguo 20/05/2010, 20:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: IF o SWITCH CASE

Lo mejor es usar un switch para eso, ya que te evitas estar haciendo tantos ifs...

Saludos.
  #3 (permalink)  
Antiguo 21/05/2010, 18:42
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: IF o SWITCH CASE

Gracias GatorV,

pero efectivamente, eso preguntaba, no me importaría escribir casi 100 veces lo mismo o tener que escribir mucho mas código por usar una u otra opción, lo que quiero saber, para el servidor, que sentencia es mejor utilizada en estos casos y cual se resuelve en forma mas óptima en el servidor ??

Gracias.
  #4 (permalink)  
Antiguo 21/05/2010, 18:55
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 10 meses
Puntos: 36
Respuesta: IF o SWITCH CASE

Es un sinsentido preocuparse por ese nivel de optimización; ¿qué es más rápido?, sin importar cuál sea, la diferencia será imperceptible. Para optimización es mejor enfocarse en otras partes, no en si utilizar un if o un switch, no si en imprimir con comillas dobles o sencillas ... Ya antes deje un comentario amplio al respecto, igual los hay de otras personas; también es un sinsentido repetir lo mismo.

En lo que te deberías de preocupar es en la lectura de tu código. En este caso un switch es de mejor lectura, más fácil de entender, de modificar, de mantener, de escribir.

... , pero para no dejarte con la curiosidad, el tiempo de ejecución es el mismo. Internamente un swtich es un puntero a un if, no más. El intérprete hace lo mismo para ambos casos.
__________________
I ♥ The Music!
  #5 (permalink)  
Antiguo 21/05/2010, 19:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: IF o SWITCH CASE

bueno en ese caso si tu if solo es asi de simple y no anidado, seria conveniente mejor usar el switch para hacerlo mas simeple, en le caso que quieras hacer anidaciones tendrias q usar el if...es recomendable a mi parecer =)..
salu2
  #6 (permalink)  
Antiguo 21/05/2010, 19:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: IF o SWITCH CASE

Añado a lo que explico correctamente maturano, es lo mismo (if y switch) si usas la estructura de control correctamente (if, elseif, else). Como también tienes que declarar en el switch un break para que se detenga y no continúe leyendo el resto de la estructura de switch cuando la condición sea cierta. No es lo mismo if, if, if, if, if... que if, elseif, elseif, elseif, elseif, else. La razón (para el que no lo sepa) es que cuando PHP se encuentra con un if (basándonos en el ejemplo que está mencionando Jamati) lee la condición y aunque la condición sea cierta y ejecute esa condición no se detiene PHP no deja de leer el resto de las condiciones sino que continúa y cuando encuentre otro if va a verificar si también es cierta y así sucesivamente con los demás if.

Ahora, si creas la estructura de control correctamente, en el caso que está exponiendo Jamati, PHP se encuentra con el if, si la condición es falsa, luego se encuentra con el primer elseif, si la condición es falsa, continúa con el siguiente y si la condición es cierta ya PHP no continúa con los demás elseif y el else que falte. Brinca el resto de la estructura de control y continúa con el resto del código.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 21/05/2010, 19:55
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 10 meses
Puntos: 21
Respuesta: IF o SWITCH CASE

Cita:
Iniciado por Jamati Ver Mensaje
Hola,

En caso de tener por ejemplo una condición que puede ser del 1 al 10, que es mas rápido, usar

if ($variable == 1) {}
if ($variable == 2) {}
if ($variable == 3) {}
if ($variable == 4) {}
if ($variable == 5) {}
if ($variable == 6) {}
if ($variable == 7) {}
if ($variable == 8) {}
if ($variable == 9) {}
if ($variable == 10) {}

o me conviene usar un

switch ($variable)
case 1
...
case 2
...
etc etc

??

Para el caso que mencionas, es más rápido para el servidor la instrucción switch, ya que evalúa el if y ejecuta la instrucción correspondiente.

En caso de realizarlo con If´s, tendrá que analizar cada IF y resolver.

Opcionalmente puedes incluir ELSE, que sería una solución que mejora a los IF tal como los pusiste, pero aún así no supera al SWITCH.

¿Cuantos condicionales requieres? ¿acaso 1,000? Entonces utiliza SWITCH
¿Deseas comparar unos 20 condicionales? Entonces utiliza cualquier método.

Saludos
  #8 (permalink)  
Antiguo 22/05/2010, 13:51
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: IF o SWITCH CASE

Gracias a todos.

Realmente usaré alrededor de 100 condicionales, es decir, debo hacer 100 comparaciones. Obviamente me sería mas facil con un SWITCH CASE, pero yo quería aprender si existía alguna diferencia de rendimiento entre ambos.

Muy buenas explicaciones de todos, y me sirvieron muchísimo
Muchas gracias a todos.

Adios
  #9 (permalink)  
Antiguo 22/05/2010, 14:07
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: IF o SWITCH CASE

¿Por qué no muestras que tratas de hacer? Quizá es mucho más simple que escribir 100 if's.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #10 (permalink)  
Antiguo 22/05/2010, 15:56
Avatar de uokesita  
Fecha de Ingreso: enero-2008
Ubicación: Maracaibo
Mensajes: 214
Antigüedad: 16 años, 10 meses
Puntos: 17
Respuesta: IF o SWITCH CASE

Si es la misma tarea 100 veces porque no intentas hacer una función recursiva? al igual q spider boy, pregunto que deseas hacer?
  #11 (permalink)  
Antiguo 22/05/2010, 16:46
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: IF o SWITCH CASE

Yo diria que existe una forma mas sencilla de comparar 100 veces algo, no puedo imaginar algo asi, nunca me lo e encontrado(pero puede exisitir), se puede solucionar con una funcion recursiva como lo exclama uokesita, y con respecto a la optimizacion de tu codigo, pienso de que es mas conveniente preocuparta con la lectura de tu codigo y la maquetacion de tu pagina.

Mejor si expones lo que quieres hacer para ver si se puede minimizar..... saludos....
__________________
"Diseño de software a la medida"

http://www.sadhoc.com
  #12 (permalink)  
Antiguo 24/05/2010, 10:55
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: IF o SWITCH CASE

Ok,

resulta que mantengo una web vieja, la cual, para enviar formularios, paso una variable numérica por GET a una pagina, y dicha pagina recibe la variable y según el numero que sea, asigna a una variable $destino un email diferente según el número, y obviamente luego envía el correo.

Esto debió hacerse con base de datos, pero no fue así, y ahora es más sencillo realizarlo de esta forma. Por eso mi consulta era si uso un IF o un SWITCH CASE para conocer el número y saber que valor le asigno a una variable.
  #13 (permalink)  
Antiguo 24/05/2010, 11:01
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 11 meses
Puntos: 16
Respuesta: IF o SWITCH CASE

SWITCH CASE siempre que te sea posible

EDITO: También decirte que no tendrías que usar if, en caso de algo es mejor elseif, hará algo más rápida la web, pues no tendrá que comprobar todas las condiciones(irá leyendo de arriba hasta abajo, y cuando una sea cierta parará).

Por ello mismo, también es aconsejable(aunque tampoco es lo más importante), en los elseif poner arriba los elementos que más facil es que ocurran. Aunque supongo que esto ya será en páginas grandes, para ahorrar minimamente recursos que cuando tienes cientos de miles de visitas se convierten en bastantes recursos.

Un saludo
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #14 (permalink)  
Antiguo 24/05/2010, 11:04
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Respuesta: IF o SWITCH CASE

En ese caso te recomiendo que hagas algo asi:
Código PHP:
/*
Suponiendo que:
$variable = $_GET['variable'];
1 = [email protected]
2 = [email protected]
3 = [email protected]
*/
$emails = array("","[email protected]","[email protected]","[email protected]");
echo 
$emails[$variable]; 
Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #15 (permalink)  
Antiguo 24/05/2010, 11:13
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 10 meses
Puntos: 36
Respuesta: IF o SWITCH CASE

Cita:
Iniciado por Jamati Ver Mensaje
dicha pagina recibe la variable y según el numero que sea, asigna a una variable $destino un email diferente según el número
¿Y de dónde proviene ahora esa información?, ¿de dónde sacas los correos?, ¿qué iría dentro de tu if?; ¿escribirlos manualmente?.

No describes el contexto completo. La opción que describe Marvin se intuye es práctica y simple, pero no queda claro si es aplicable.
__________________
I ♥ The Music!
  #16 (permalink)  
Antiguo 24/05/2010, 11:24
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 10 meses
Puntos: 21
Respuesta: IF o SWITCH CASE

en su página inicial probablemente se selecciona por algún metodo algún campo, por ejemplo un departamento: contabilidad, ventas, etc.
Y en la página que recibe, detecta la opción de la cual viene y envía el email a la dirección correspondiente, algo así como: [email protected], etc.

Claro que es mejorable, pero quizá nuestro amigo no tenga tiempo para dedicarle a ello.

Saludos

Etiquetas: case, switch
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 07:06.