¿Hay alguna manera de usar un operador 'OR' o equivalente en un conmutador PHP?
Por ejemplo, algo como esto:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
fuente
¿Hay alguna manera de usar un operador 'OR' o equivalente en un conmutador PHP?
Por ejemplo, algo como esto:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
switch ($value)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
Esto se llama "caída" del bloque de casos. El término existe en la mayoría de los idiomas que implementan una declaración de cambio.
Si debe usar ||
con switch
, puede probar:
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Si no, su solución preferida hubiera sido
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
El problema es que ambos métodos no son eficientes cuando se trata de casos grandes ... imagine 1
que 100
esto funcionaría perfectamente
$r1 = range(1, 100);
$r2 = range(100, 200);
$v = 76;
switch (true) {
case in_array($v, $r1) :
echo 'the value is in range 1 to 100';
break;
case in_array($v, $r2) :
echo 'the value is in range 100 to 200';
break;
}
No volveré a publicar las otras respuestas porque todas son correctas, pero solo agregaré que no puede usar el interruptor para declaraciones más "complicadas", por ejemplo: para probar si un valor es "mayor que 3", " entre 4 y 6 ", etc. Si necesita hacer algo así, siga usando if
declaraciones, o si hay una necesidad particularmente fuerte, switch
entonces es posible usarlo de atrás hacia adelante:
switch (true) {
case ($value > 3) :
// value is greater than 3
break;
case ($value >= 4 && $value <= 6) :
// value is between 4 and 6
break;
}
pero como dije, personalmente usaría una if
declaración allí.
switch()
, y cuando estoy trabajando en un lenguaje C-ish realmente extraño tenerSelect Case
, lo cual es realmente una forma abreviada de decir "hay una gran bloque de if, else if, else-if ... here ".you can't use switch for more "complicated" statements
escan't
o esshouldn't
? porque en su ejemplo ustedcan
switch (true)
cosas no es un caso de uso ordinario de interruptor.Pruebe con los siguientes ejemplos en este artículo: http://phpswitch.com/
Posibles casos de interruptores:
(yo). Una simple declaración de cambio
La declaración de cambio es maravillosa y mágica. Es una parte del lenguaje que le permite seleccionar entre diferentes opciones para un valor y ejecutar diferentes partes de código según el valor establecido.
Cada opción posible viene dada por un caso en la declaración de cambio.
Ejemplo:
(ii) Delimitación de bloques de código
La advertencia principal del cambio es que cada caso se ejecutará en el siguiente, a menos que lo detenga con un descanso. Si el caso simple anterior se extiende para cubrir el caso 5:
Ejemplo:
(iii) Uso de fallthrough para múltiples casos
Debido a que el conmutador seguirá ejecutando código hasta que encuentre un descanso, es bastante fácil tomar el concepto de fallthrough y ejecutar el mismo código para más de un caso:
Ejemplo:
caso 2:
(iv) Conmutación avanzada: casos de condición
El cambio de PHP no solo le permite cambiar el valor de una variable en particular: puede usar cualquier expresión como uno de los casos, siempre que le dé un valor para que el caso lo use. Como ejemplo, aquí hay un validador simple escrito usando el interruptor:
Ejemplo:
Creo que esto puede ayudarte a resolver tu problema.
fuente
Tratar
fuente
Le sugiero que visite http://php.net/manual/en/control-structures.switch.php (manual)
explicación
Al igual que para el valor de qué ejecutar una sola declaración, puede ponerlo sin interrupción como hasta o a menos que se encuentre una interrupción, continuará ejecutando el código y, si se encuentra una interrupción, saldrá de la caja del interruptor.
fuente
usa este código:
el bloque requería tanto 1 como 2.
fuente
fuente
http://php.net/manual/en/control-structures.switch.php Ejemplo
fuente
La mejor manera podría ser, si no, con la solicitud. Además, esto puede ser más fácil y claro de usar.
Ejemplo:
En lugar de usar las funciones que no funcionarán bien con PHP, especialmente cuando tienes PHP en HTML.
fuente