operator - operadores de asignacion en php
¿Cómo usar una caja de conmutadores ''o'' en PHP? (10)
¿Hay alguna forma de utilizar 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;
}
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 usar las funciones que no funcionarán bien con PHP, especialmente cuando tienes PHP en HTML.
No volveré a publicar las otras respuestas porque son todas correctas, pero agregaré que no puedes 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 como eso, adhiérase a usar sentencias if
, o si hay una necesidad particularmente grande para el switch
entonces es posible usarlo de nuevo al frente:
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 declaración if
allí.
Pruebe con los siguientes ejemplos en este artículo: http://phpswitch.com/
Posibles casos de cambio:
(yo). Una declaración de cambio simple
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 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). Delimitar bloques de código
La principal advertencia del cambio es que cada caso se ejecutará en el próximo, a menos que lo detenga con un descanso. Si el caso simple anterior se extiende para cubrir el 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) Uso de Fallthrough para casos múltiples
Debido a que el switch seguirá ejecutando el 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:
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 de condición
El cambio de PHP no solo le permite activar el valor de una variable en particular: puede usar cualquier expresión como uno de los casos, siempre que proporcione un valor para el caso que se va a utilizar. Como ejemplo, aquí hay un validador simple escrito usando 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 ayudarte a resolver tu problema.
Si debes usar ||
con el switch
entonces puedes 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 que de 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;
}
Te sugiero que vayas 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 para el valor de lo que se debe ejecutar declaración única, puede colocarlo sin interrupción hasta que, a menos que se encuentre break, continuará ejecutando el código y si se encuentra break, saldrá de la caja del switch.
Tratar
switch($value) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
usa este código:
switch($a) {
case 1:
case 2:
.......
.......
.......
break;
}
el bloque requería ambos, 1 y 2.
http://php.net/manual/en/control-structures.switch.php Ejemplo
$today = date("D");
switch($today){
case "Mon":
case "Tue":
echo "Today is Tuesday or Monday. Buy some food.";
break;
case "Wed":
echo "Today is Wednesday. Visit a doctor.";
break;
case "Thu":
echo "Today is Thursday. Repair your car.";
break;
default:
echo "No information available for that day.";
break;
}
switch ($value)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
Esto se llama "atravesar" el bloque de casos. El término existe en la mayoría de los lenguajes que implementan una instrucción switch.
switch ($value)
{
case 1:
case 2:
echo ''the value is either 1 or 2'';
break;
}