Lekce 3: Podmínky
- Bez podmínek by se to opravdu nedalo. Co se týče porovnání čísel, slov, nebo jen jestli je něco správně nebo ne. Prostě podmínky se budete muset naučit nazpaměť.
- Co se týče syntaxe a vůbec používanych příkazů, tak ty jsou tyto:
$a = 3;
$b = 6;
/* $a == $b // pokud $a i $b budou stejne
* $a != $b // pokud $a i $b budou odlisne
* $a > $b // pokud $a bude vetsi nez $b
* $a < $b // pokud $a bude mensi nez $b
* $a >= $b // pokud $a bude vetsi nebo rovno $b
* $a <= $b // pokud $a bude mensi nebo rovno $b
* !$a // vsimnete si vykricniku, to neguje promennou $a (pokud nebude $a)
*/
// hola podminka ma tento tvar
if ($a == $b) echo "A i B jsou stejné";
if ($a < $b) echo "A je menší než B";
// uplna podminka
if ($a > $b)
{
echo "A je větší než B";
}
else echo "B je větší než A";
// podminku si muzeme jeste rozsirit o dalsi stupen
if ($a == $b)
{
echo "A i B jsou stejné";
}
else if ($a > $b)
{
echo "A je větší než B";
}
else echo "B je větší než A";
- Doufám, že podmínky jsou celkem jasné, jen bych chtěl podotknout,
že podmínku else if používejte max 1, pokud těch podmínek bude více, tak použijte switch o kterém se za chvíli zmíním.$prom = true; // promenna, ktera vrati hodnotu true (pravda) // pokud promenna $prom bude true if ($prom) echo "Promenná je pravdivá"; // pokud promenna $prom nebude true if (!$prom) echo "Promenná není pravdivá";- Může se vám ovšem stát, že budete potřebovat v jedné podmínce porovnat více věcí než jednu. K tomu nám slouží další operátory, které spojují více možných situací v jedné podmínce.
$a = 6;
$b = 2;
/* && (nebo and) // musi se splnit obe podminky
* || (nebo or) // musi se splnit alespon jedna podminka
* & (bitove) // druhy vyhodnocovany vyraz se vyhodnoti i presto, kdyz prvni je false
* | (bitove) // druhy vyhodnocovany vyraz se vyhodnoti i presto, kdyz prvni je true
*/
// pokud promenna $a bude 5 nebo vetsi nez promenna $b
if ($a == 5 || $a > $b)
{
// pokud $a bude 5
if ($a == 5)
{
echo "A je 5";
}
else echo "A je větší než B";
}
else echo "A není 5 a ani větší než B";
Pozor: Někdy se stane, že v podmínce místo == uděláte =. Podmínka bude mít úplně jiný význam! Bude to znamenat,
že nechcete porovnat, ale nastavit hodnotu. Tím pádem bude ve většině případů podmínka vždy splněna.
$denVTydnu = 5; // nastavime si den v tydnu
if ($denVTydnu == 1)
{
$den = "Pondělí";
}
else if ($denVTydnu == 2)
{
$den = "Úterý";
}
else if ($denVTydnu == 3)
{
$den = "Středa";
}
else if ($denVTydnu == 4)
{
$den = "Čtvrtek";
}
else if ($denVTydnu == 5)
{
$den = "Pátek";
}
else if ($denVTydnu == 6)
{
$den = "Sobota";
}
else if ($denVTydnu == 7)
{
$den = "Neděle";
}
else $den = "Zadaný den neexistuje!";
echo "Dnes je: $den"; // vypiseme co je dnes za den
- Jak vidíte, tak i když je to správně, tak tudy cesta nevede. Pro takové případy, kdy máme mnoho podmínek je právě příkaz switch jako stvořený.
Nyní vám ukážu úplně stejný kód, jen s pomocí switch.
$denVTydnu = 5; // nastavime si den v tydnu
// vlozi hodnotu do switch, ktera se ma porovnavat
switch ($denVTydnu)
{
// seznam ruznym hodnot se kteryma se vstupni hodnota porovna
// cteme to jako - Pokud vstup bude N, tak nastav $den na X a ukonci switch
case 1: $den = "Pondělí"; break;
case 2: $den = "Úterý"; break;
case 3: $den = "Středa"; break;
case 4: $den = "Čtvrtek"; break;
case 5: $den = "Pátek"; break;
case 6: $den = "Sobota"; break;
case 7: $den = "Neděle"; break;
default: $den = "Den neexistuje"; break;
}
echo "Dnes je: $den"; // vypiseme co je dnes za den
- Jak vidíte, tak rozdíl je velký. Rozhodně pro takové situace doporučuji použít switch.
- Tento druh podmínek moc lidí nezná, tak není na škodu o tom něco říct.
- Jedná se o zkrácené podmínky. Je to vlastně zkrácená úplná podmínka.
$a = 3; $b = 6; echo $a > $b ? $a : $b; // pokud $a bude vetsi nez $b, tak vypis $a jinak $b- Jednoduše řečeno... za otazníkem ? je to, pokud podmínka bude splněna a dvojtečka : je jako else, takže pokud se podmínka nesplní, tak se provede to za ní.
echo ($a > $b) ? $a : $b;Pozor: Nesnažte se všude cpát ternální podmínku. V této podmínce nejde nastavit víc, než jeden příkaz (nejdou složené závorky). A používá se hlavně tam, kde se vrací nějaká hodnota (zde třeba do echa).
$cislo = (10 < 20) ? 10 : 20; // priradi se 10, protoze je mensi nez 20 echo $cislo / 2; // vrati 5, protoze 10 / 2 je 5- Doufám, že je to celkem jasné.
1) Vytvořte si proměnnou, do které zadáte číslo měsíce (1-12) a vypíše vám to název měsíce (pomocí switch).
$mesic = 6; // cislo mesice
switch ($mesic)
{
case 1: $mes = "Leden"; break;
case 2: $mes = "Únor"; break;
case 3: $mes = "Březen"; break;
case 4: $mes = "Duben"; break;
case 5: $mes = "Květen"; break;
case 6: $mes = "Červen"; break;
case 7: $mes = "Červenec"; break;
case 8: $mes = "Srpen"; break;
case 9: $mes = "Září"; break;
case 10: $mes = "Říjen"; break;
case 11: $mes = "Listopad"; break;
case 12: $mes = "Prosinec"; break;
default: $mes = "Tento mesic neexistuje"; break;
}
echo $mesic.". měsíc je ".$mes; // 6. měsíc je Červen
2) Vytvořte proměnnou, kde bude známka (jako ve škole 1-5) a vypíše vám to známku slovně (přes if / else if).
$znamka = 2; // nastavi vasi znamku
if ($znamka == 1)
{
$zn = "Výborně";
}
else if ($znamka == 2)
{
$zn = "Chvalitebný";
}
else if ($znamka == 3)
{
$zn = "Dobrá";
}
else if ($znamka == 4)
{
$zn = "Dostatečná";
}
else if ($znamka == 5)
{
$zn = "Nedostatečná";
}
else $zn = "-";
echo "Vaše známka je: ".$zn; // Vaše známka je: Chvalitebný