Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/08/2013, 09:59
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: Transformar IFs anidados en SWITCH-CASE

¿De menos sí sabes como funcionan los switch-case?

A diferencia de if-then-else no esperan valores booleanos necesariamente, reciben cualquier valor y los case se encargan de hacer el matching.

Es por eso que una expresión booleana de un if-then-else no tiene el mismo significado en switch-case, pues en switch-case se esperan más de un tipo de valor, no una expresión booleana.

Vamos a ver tus "ejemplos".

Código PHP:
Ver original
  1. // ($nombre=='jose', $var!=null, $b<$a)
  2.  
  3. if ($nombre=='jose') {
  4. } elseif ($var!=null) {
  5. } elseif ($b<$a) {
  6. }
  7.  
  8. switch (/* ¿aquí cual de las tres expresiones colocarías ? */) {
  9.   case /* aquí que tipo de resultado esperarías */
  10. }

¿Verdad que no tiene sentido?

Ahora vamos a tratar de hacer lo mismo con switch-case usando un valor en común, un booleano.

Código PHP:
Ver original
  1. switch (true) {
  2.   case $nombre=='jose'; break;
  3.   case $var!=null; break;
  4.   case $b<$a; break;
  5. }

Y es exactamente lo mismo que el if-then-else, pero sigo sin ver la "ventaja" más alla del gusto por hacerlo así.

PDTA: Aun sigo tratando de entender lo que dices aquí:
Cita:
En general puedo pasar algo N-dimensional a uni-dimensional con este tipo de transformaciones con un costo muy pequeño en tiempo de ejecucion.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.