Cita:
Iniciado por pateketrueke ¿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