Autor Zpráva
Pivosz
Profil
Zdravím všechny,

nevíte někdo jakým způsobem donutit switch abych nemusel v case používat přesné hodnoty tj. něco jako:

switch ($i) {

case >1: echo " je větší než 1";
case <2: echo " je menší 2";
case !=3: echo "nerovná se 3";

}

nad smyslem příkladu nebádejte ;-) jde jen o pincip

stačí mě nakopnou.

díky Pivosz
tiso
Profil
Pivosz - to nejde, môžeš použiť if/elseif/else
Pivosz
Profil
Díky
tušil jsme to , ale doufal jsem :-)
centi
Profil
tiso
Ale jasné, že to je možné. Len treba použiť malý trik :)

$value = 4;
switch(1) {
case ($value < 0):
echo "less then 0";
break;
case ($value >= 0 && $value < 5):
echo "0 or more and less then 5";
break;
case ($value == 5):
echo "equals 5";
break;
default:
echo "omg, it's more then 5?!";
break;
}
tiso
Profil
centi - a tým si ako dosiahol čo? Vykonanie jednej podmienky naviac?
centi
Profil
tiso
Nie, len hovorím, že switch je možné použiť i na intervalové (resp. akékoľvek) podmienky. Či to v danom prípade má alebo nemá zmysel už neriešim. Inak je to samozrejme riešenie v podstate rovnaké ako si navrhoval ty s if/elseif/else.
Pivosz
Profil
Díky,

možná tam je jedna podmínka navíc, ale připadá mi to přehlednější a lepší na údržbu.
Krom toho to se to asi bude vyhodnocovat jinak než if/elseif/else.

Ještě jednou díky.
tiso
Profil
Pivosz - nebude, lebo podmienky máš v každej vetve, takže kým nenarazí na správnu vetvu, budú sa všetky vykonávať, spolu s prvým porovnaním zo switch-u..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0