Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/08/2013, 12:35
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Transformar IFs anidados en SWITCH-CASE

Cita:
Iniciado por pateketrueke Ver Mensaje
¿De menos sí sabes como funcionan los switch-case?
Tu sabes hablar sin insultar o agredir ? haz el intento

Mira... he re-escrito el ejemplo que has planteado:

Código PHP:
// ($nombre=='jose', $var!=null, $b<$a)
 
if ($nombre=='jose') {
    echo 
'Jose';
} elseif (
$var!=null) {
    echo 
'Not null';
} elseif (
$b<$a) {
    echo 
'Menor';

Lo cual... yo lo escribiria (leer al final) asi:

Código PHP:
  switch (($nombre=='jose')*100 10*($var!=null) + ($b<$a))
    {
        case (
111):  break;
        case (
110):  break;
        case (
101):  break;
        case (
100):  echo 'Jose';     break;
        case (
11):  break;
        case (
10):  echo 'Not null'; break;
        case (
1):  echo 'Menor';    break;        
        case (
0):         
    } 
Y el resultado NO es el mismo PORQUE..... no es el objetivo (cosa que veo me falto explicar bien) --mi FAIL

El uso es demasiado particular y aplicaria solo cuando necesitas todas las combinaciones posibles de las condiciones evaluadas como FALSE / TRUE... en mi caso lo he usado para esto:

Código PHP:
    public function findSub(TagSequence $sub,$gaps=false,$deep=false)
    {
        if (!
is_bool($gaps))
            throw new 
InvalidArgumentException ("Gaps debe ser bool en ".__METHOD__); 

        if (!
is_bool($deep))
            throw new 
InvalidArgumentException ("Deep debe ser bool en ".__METHOD__);

        
tagSecuenceSearch::setHaystack($this);

        switch (
$gaps*10 $deep)
        {
            case (
11): return tagSecuenceSearch::findSubWithGapsWithDeep($sub);
            case (
10): return tagSecuenceSearch::findSubWithGapsNoDeep($sub);
            case (
1): return tagSecuenceSearch::findSubNoGapsWithDeep($sub);
            case (
0): return tagSecuenceSearch::findSubNoGapsNoDeep($sub);
        }
    } 
Reduciendo varios IF anidados... que incluso podrian ser 3 niveles (o dimensiones) si tuviera 3 condiciones distintas...

Que pensa sino fui claro..... pero POR FAVOR... NO ME AGREDAS.....GRACIAS
__________________
Salu2!

Última edición por Italico76; 08/08/2013 a las 12:41