Existe uma maneira de usar um operador 'OR' ou equivalente em um switch PHP?
Por exemplo, algo como isto:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
fonte
Existe uma maneira de usar um operador 'OR' ou equivalente em um switch PHP?
Por exemplo, algo como isto:
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;
}
Isso é chamado "caindo através" do bloco do caso. O termo existe na maioria dos idiomas implementando uma instrução switch.
Se você deve usar ||
com, switch
então você pode tentar:
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Caso contrário, sua solução preferida teria sido
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
A questão é que ambos os métodos não são eficientes ao lidar com casos grandes ... imagine 1
que 100
isso funcionaria perfeitamente
$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;
}
Não vou repassar as outras respostas porque todas estão corretas, mas apenas acrescentarei que você não pode usar o switch para obter instruções mais "complicadas", por exemplo: para testar se um valor é "maior que 3", " entre 4 e 6 ", etc. Se você precisar fazer algo assim, use if
instruções, ou se houver uma necessidade particularmente forte switch
, é possível usá-lo de trás para frente:
switch (true) {
case ($value > 3) :
// value is greater than 3
break;
case ($value >= 4 && $value <= 6) :
// value is between 4 and 6
break;
}
mas como eu disse, eu pessoalmente usaria uma if
declaração lá.
switch()
, e quando estou trabalhando em uma linguagem C realmente sinto falta de terSelect Case
, o que é realmente uma maneira abreviada de dizer "há uma grande bloco de if, else if, else-if ... here ".you can't use switch for more "complicated" statements
écan't
ou éshouldn't
? porque no seu exemplo vocêcan
switch (true)
coisa não é um caso de uso comum de switch.Tente com os seguintes exemplos neste artigo: http://phpswitch.com/
Possíveis casos de comutação:
(Eu). Uma declaração de chave simples
A declaração do switch é maravilhosa e mágica. É uma parte do idioma que permite selecionar entre diferentes opções para um valor e executar diferentes partes do código, dependendo do valor definido.
Cada opção possível é fornecida por um caso na instrução switch.
Exemplo:
(ii) Delimitando blocos de código
A principal advertência é que cada caso será executado no próximo, a menos que você pare com um intervalo. Se o caso simples acima for estendido para cobrir o caso 5:
Exemplo:
(iii) Usando a descoberta para vários casos
Como o switch continuará executando o código até encontrar uma interrupção, é fácil adotar o conceito de avanço e executar o mesmo código em mais de um caso:
Exemplo:
caso 2:
(iv) Comutação avançada: casos de condição
O switch do PHP não permite apenas ativar o valor de uma variável específica: você pode usar qualquer expressão como um dos casos, desde que dê um valor para o caso. Como exemplo, aqui está um validador simples escrito usando switch:
Exemplo:
Eu acho que isso pode ajudá-lo a resolver seu problema.
fonte
Experimentar
fonte
Eu sugiro que você acesse http://php.net/manual/en/control-structures.switch.php (manual)
explicação
Como para o valor que você deve executar em uma única instrução, você pode colocá-la sem interrupção, pois até ou a menos que seja encontrada uma interrupção, ele continuará executando o código e, se a interrupção for encontrada, sairá da caixa do comutador.
fonte
use este código:
o bloco pedia 1 e 2.
fonte
fonte
http://php.net/manual/en/control-structures.switch.php Exemplo
fonte
A melhor maneira pode ser se houver outra solicitação. Além disso, isso pode ser mais fácil e claro de usar.
Exemplo:
Em vez de usar as funções que não funcionam bem com PHP, especialmente quando você tem PHP em HTML.
fonte