Foros del Web » Programando para Internet » PHP »

Qué es más eficiente usar if else o un switch?

Estas en el tema de Qué es más eficiente usar if else o un switch? en el foro de PHP en Foros del Web. Buenas, En mi web modular uso un fichero llamado metatags.php el cual según la variable de la página cargo un titulo o una descripción determinada. ...
  #1 (permalink)  
Antiguo 10/10/2010, 02:32
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Qué es más eficiente usar if else o un switch?

Buenas,

En mi web modular uso un fichero llamado metatags.php el cual según la variable de la página cargo un titulo o una descripción determinada.

Código PHP:
Ver original
  1. <?php  
  2. /*
  3.  * Dependiendo de la página cargará su propio titulo y metas
  4.  */
  5. if( $_GET [ 'pagina' ]== "home" ){ ?>
  6. <title>Inicio | Web</title>
  7. <meta name="keywords" content="palabras clave relacionadas con el modulo" />
  8. <meta name="description" content="descripción del modulo" />
  9. <?php  }
  10. else if( $_GET [ 'pagina' ]== "faq" ){ ?>
  11. <title>Preguntas Frecuentes (F.A.Q) | Ayuda | Web</title>
  12. <meta name="keywords" content="palabras clave relacionadas con el modulo" />
  13. <meta name="description" content="descripción del modulo" />
  14. <?php  }
  15. else if( $_GET [ 'pagina' ]== "registro" ){ ?>
  16. <title>Crear cuenta ME | Web</title>
  17. <meta name="keywords" content="palabras clave relacionadas con el modulo" />
  18. <meta name="description" content="descripción del modulo" />
  19. <?php  }
  20. else if( $_GET [ 'pagina' ]== "soporte" ){ ?>
  21. <title>Soporte ME | Ayuda | Web</title>
  22. <meta name="keywords" content="palabras clave relacionadas con el modulo" />
  23. <meta name="description" content="descripción del modulo" />
  24. <?php }else { ?>
  25. <title>La página no existe</title>
  26. <meta name="keywords" content="palabras clave relacionadas con la web" />
  27. <meta name="description" content="descripción de la web en general" />
  28. <?php  } ?>
  29.  
  30. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  31. <link rel="shortcut icon" href="/imagenes/favicon.ico"/>
  32. ?>

El problema es si la página va creciendo y en lugar de tener 50 if else, tuviese 200 o 300 o más.

¿Qué método creéis que sería el más optimo?

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 10/10/2010, 03:33
Avatar de blekia  
Fecha de Ingreso: julio-2009
Mensajes: 204
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Qué es más eficiente usar if else o un switch?

es exactamente lo mismo, la única diferencia es que si no break en el switch el resto de reglas también serán procesadas.
__________________
Controla tu Página Web con cualquier navegador.
  #3 (permalink)  
Antiguo 10/10/2010, 04:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: Qué es más eficiente usar if else o un switch?

Hombre, desde el punto de vista de organizaciond el codigo para mi gusto queda mejor el switch, break. Pero desde el punto de vista funcional son identicos.
  #4 (permalink)  
Antiguo 10/10/2010, 05:19
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 20 años, 1 mes
Puntos: 7
Respuesta: Qué es más eficiente usar if else o un switch?

Yo creo que el método más óptimo sería separar los datos de la lógica del programa y haría que los datos estuviese en un array, en una base de datos o donde mejor vaya.

Por ejemplo (no he tenido tiempo de probarlo, pero sirve para ver la idea), con un array:

Código PHP:
$datos_metatags = Array ("home" => Array ("Inicio | Web","palabras clave relacionadas con el modulo","descripción del modulo"),
"faq" => Array ("Preguntas Frecuentes (F.A.Q) | Ayuda | Web","palabras clave relacionadas con el modulo","descripción del modulo"));

crear_metatags (){
    
$nombre_pagina $_GET 'pagina' ];
    if (
array_key_exists ($nombre_pagina$datos_metatags)){
        print (
'<title>'.datos_metatags[$nombre_pagina][0].'</title>');
        print (
'<meta name="keywords" content="'.datos_metatags[$nombre_pagina][1].'" />');
        print (
'<meta name="description" content="'.datos_metatags[$nombre_pagina][2].'" />');
    } else (){
        print (
'<title>La página no existe</title>');
        print (
'<meta name="keywords" content="palabras clave relacionadas con la web" />');
        print (
'<meta name="description" content="descripción de la web en general" />');
    }

Aún lo separaría más, cambiando array_key_exists ($nombre_pagina, $datos_metatags) por una función que acceda a los datos, para que si en un futuro cambias los datos a una base de datos sólo se tenga que cambiar esa función.

Etiquetas: eficiente, 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 10:30.