Jedna z podmínek, na kterou je nutné si dát pozor.
Řídící struktura switch je velice podobná již zmiňované konstrukci If..Elseif..Else. Její využití najdete v případě porovnání argumentu s větší množinou hodnot.
Příkaz switch je nutno dobře pochopit, co vlastně dělá. Switch prochází řádek po řádků, pokud najde case s hodnotou odpovídající výrazu, který testujeme, tak začne provádět příkazy. Vykonání kódu pokračuje dokud nedosáhne konce bloku, nebo nenarazí na break. Pokud zde nebude break, dočkáte se nečekaných věcí.
V příkladu pomocí parametru strana načítám číslo 1 nebo 2 a podle toho se rozhoduji jakou stranu načtu. Příklad jsem rozšířil o případ, že pro 0 a 1 chci načíst první stranu http://www.owebu.cz/css/, zde demonstruji případ toho, co se stane, pokud se nevyskytuje break.
soubor index.php
<?
Switch ($_REQUEST['strana'])
{
case 0:
case 1:
$url="http://www.owebu.cz/css/";
break;
case 2:
$url="http://www.owebu.cz/php/";
break;
default:
$url="http://www.owebu.cz/";
}
?>
<p> námi zvolená strana: <a href="<? echo $url ?>"><? echo $url ?></a>
<p> námi zvolená strana: <a href="index.php?strana=0">strana 0</a>
<p> námi zvolená strana: <a href="index.php?strana=1">strana 1</a>
<p> námi zvolená strana: <a href="index.php?strana=2">strana 2</a>
Pokud jste příklad zcela nepochopily, pak zkuste vykonat následující dva kódy. První kód:
<?
$a = 2;
Switch ($a)
{
case 1:
echo "a je rovna 1 ";
break;
case 2:
echo "a je rovna 2 ";
break;
case 3:
echo "a je rovna 2 ";
break;
default:
echo "Promenna a neni rovna nicemu co bychom potrebovali !";
}
?>
a druhý kód
<?
$a = 2;
Switch ($a)
{
case 1:
echo "a je rovna 1 ";
case 2:
echo "a je rovna 2 ";
case 3:
echo "a je rovna 3";
default:
echo "Promenna a neni rovna nicemu co bychom potrebovali !";
}
?>
V posledním příkladu, jsem omylem zapomněl dodat break.