¿Hay alguna forma de utilizar un operador 'OR' o equivalente en un conmutador php? Por ejemplo, algo como esto:¿Cómo usar una caja de conmutadores 'o' en PHP?
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
¿Hay alguna forma de utilizar un operador 'OR' o equivalente en un conmutador php? Por ejemplo, algo como esto:¿Cómo usar una caja de conmutadores 'o' en PHP?
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 conoce como "cayendo a través de" el bloque caso. El término existe en la mayoría de los lenguajes que implementan una instrucción switch.
Trate
switch($value) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
No voy a volver a publicar las otras respuestas porque son los correctos, pero sólo voy a añadir que no se puede utilizar el interruptor para más declaraciones "complicado", por ejemplo: a pruebe si un valor es "mayor que 3", "entre 4 y 6", etc. Si necesita hacer algo como eso, siga las instrucciones if
, o si hay una necesidad particularmente fuerte de switch
, entonces es posible usarlo al revés:
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 ya he dicho, utilizaría personalmente un if
declaración allí.
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:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
En lugar de utilizar las funciones que no funcionan bien con PHP, especialmente cuando se tiene PHP en HTML.
¿cómo es eso más claro que una instrucción switch? –
Si tiene que usar ||
con switch
entonces puede intentar:
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Si no es su solución preferida habría sido
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
La cuestión es que tanto el método no es eficiente cuando se trata de casos grandes ... imagine 1
a 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;
}
uso este código:
switch($a) {
case 1:
case 2:
.......
.......
.......
break;
}
el bloque llamado para ambos 1 y 2.
switch ($value)
{
case 1:
case 2:
echo 'the value is either 1 or 2';
break;
}
le sugiero que vaya a través de http://php.net/manual/en/control-structures.switch.php (manual)
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
explicación
Al igual que el valor de lo que se debe ejecutar declaración simple puede ponerlo sin interrupción como como hasta que, a menos que se encuentre break, continuará ejecutando el código y si se encuentra break, saldrá de la caja del switch.
intento con estos ejemplos siguientes en este artículo: http://phpswitch.com/
posible cambio de iPhone:
(i). Una declaración simple interruptor
La sentencia switch es maravilloso y mágico. Es una parte del lenguaje que le permite seleccionar entre diferentes opciones para un valor y ejecutar diferentes piezas de código según el valor que se establezca.
Cada opción posible viene dada por un caso en la declaración de cambio.
Ejemplo:
switch($bar)
{
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
}
(ii). bloques de código Delimitación
La principal advertencia del interruptor es que cada caso se ejecutará en en el siguiente, a menos que lo pare con rotura de puente. Si el caso simple de arriba se extiende para cubrir caso 5:
Ejemplo:
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
break;
case 5:
echo "A copy of Ringworld is on its way to you!\n";
$foo = 34;
break;
(iii). Usando fallthrough para múltiples casos
Debido interruptor mantendrá la ejecución de código hasta que encuentra un descanso, es bastante fácil de llevar el concepto de fallthrough y ejecutar el mismo código para más de un caso:
Ejemplo:
caso 2:
case 3:
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
break;
case 5:
echo "A copy of Ringworld is on its way to you!\n";
$foo = 34;
break;
(iv). conmutación avanzada: casos Condición
interruptor de PHP no solo permiten cambiar el valor de una variable en particular: se puede usar cualquier expresión como uno de los casos, siempre y cuando se da un valor para el caso de usar. A modo de ejemplo, he aquí una sencilla validador escrito con el interruptor:
Ejemplo:
switch(true)
{
case (strlen($foo) > 30):
$error = "The value provided is too long.";
$valid = false;
break;
case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
$error = "The value must be alphanumeric.";
$valid = false;
break;
default:
$valid = true;
break;
}
creo que esto puede ayudar a resolver su problema.
¿Tiene algún caso de uso del mundo real para el ejemplo (iv)? –
No, no tenía ahora @PedroMoreira –
Me alegro de que haya recomendado si() sobre el interruptor() en este caso. Este tipo de cambio solo agrega complejidad, IMO. – moo
Sí, tendrías que tener una razón bastante convincente para elegir este estilo, pero es bueno saber que es posible. – nickf
Estoy realmente contento de haber aprendido esto.Cada vez que construyo un proyecto en un lenguaje Basic-y, echo de menos tener un '' switch() 'de estilo C, y cuando estoy trabajando en un lenguaje C-ish realmente extraño tener' Select Case', que es realmente una manera taquigráfica de decir "hay un gran bloque de si, si no, si ... si ... aquí". –