PHP - Switch

Nunca vi um switch com mais do que uma variável :S

PHP.net/switch

Não sei se o que queres é algo como:
PHP:
switch ($i) {
case 0:
case 1:
    echo "i <= 1";
    break;
case 2:
    echo "i = 2";
    break;
}
 
Oi,

Alguem me pode mostrar um exemplo de switch com duas variaveis(se for possivel em PHP)

Olá,

PHP:
<?php

/* Assumindo que os valores permitidos para as vars são:

   $i: 1, 2, 3, 4
   $j: 1, 2, 3, 5, 6

   As combinações possíveis serão:

   11, 12, 13, 14, 15, 16
   21, 22, 23, 24, 25, 26
   31, 32, 33, 34, 35, 36
   41, 42, 43, 44, 45, 46
*/

/* Imaginando um exemplo em que $i = 1 e $j = 2;
   A sua combinação será 12
*/
$i = 1;
$j = 2;

/* Usando o operador de concatenação de strings do PHP:
   http://pt2.php.net/language.operators.string
*/
$k = $i . $j;

switch($k) {
        case 11:
                break;
        case 12:
                echo "i = 1, j = 2";
                break;
        case 13:
                break;
        case 14:
                break;
        /* ... */
        case 46:
                echo "i = 4, j = 6";
                break;
        default:
                echo "...";
                break;
}
?>
Achas que algo deste género resolve o teu problema? Os valores dados são apenas exemplos e podes, obviamente, utilizar outras combinações :)

Cumps,
JP
 
nao era bem isso que eu queria

quando me referia a duas variaveis referia-me mais ou menos a isto:

PHP:
<?php
 
...
 
if ($var1=="Ola" && $var2=="Adeus")
{
...
}
mas em switch
qualquer coisa como:

PHP:
switch($var1,$var2)
{
case "ola","adeus":
...;
}


nao sei se isto existe mas é qualquer coisa deste genero
 
não é isso que ele quer. ele quer comparar duas variaveis ao mesmo tempo, e não comparar uma variavel com vários valores

isso só com um case não existe. podes fazer com um novo case dentro de cada opção do primeiro, ou então com vários if else if, ou até uma mistura dos dois.
 
nao era bem isso que eu queria

quando me referia a duas variaveis referia-me mais ou menos a isto:

PHP:
<?php
 
...
 
if ($var1=="Ola" && $var2=="Adeus")
{
...
}
mas em switch
qualquer coisa como:

PHP:
switch($var1,$var2)
{
case "ola","adeus":
...;
}
nao sei se isto existe mas é qualquer coisa deste genero

O que eu pretendi mostrar no exemplo, é que, como um switch só permite uma variável, podes concatenar duas variáveis independentes e fazer a comparação baseando-te nisso.

Ou seja:

PHP:
$var1 = "ola";
$var2 = "Adeus";
$var_check = $var1 . "|" . $var2;

switch($var_check) {
    case "ola|Adeus":
        echo "var1=ola, var2=Adeus";
        break;
}
É um "hack" feio, sim. Mas funciona ;)

Cumps,
JP
 
Última edição:
Back
Topo