Učíme se PHP online a nekupujem knihy :o)

>> Pro všechny, kdo mají rádi tento jazyk nebo pro ty, kteří se v něm chějí zdokonalit.



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ěť.


Základní syntaxe podminek


- Co se týče syntaxe a vůbec používanych příkazů, tak ty jsou tyto:

if holá podmínka

else if rozšířená podmínka

switch vicenásobná podmínka


- A jelikož jsme u podmínek, tak nám nebudou stačit operátory v předchozí lekce, takže se naučíme nové.
- Rovnou ukážu příklad a vysvětlim pomocí komentářů.
$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.
- Další věc na kterou jsem zapoměl je, že podmínky vrací hodnoty true a false, kde true je pravda nebo-li 1 a false je nepravda nebo-li 0.
- Tyto hodnoty můžeme též přiřadit k proměnné a tu poté porovnávat.
$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.

- Nyní si ukážem nějaký krátký příklad. První typ bude přes else if a druhý přes switch. Sami uvidíte, že v tomto případu bude mnohem lepší alternativa právě switch.
$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.
- Určitě jste si všimli, že každou jednotlivou podmínku zakončuji příkazem break, je to z toho důvodu, aby při zhodnocení podmínky na true se nastavila hodnota a ukončil se switch.
- Další co je nové je příkaz case, který nám učuje s čím se ma vstupní hodnota porovnat (končí vždy dvojtečkou).
- Poslední nový příkaz je default, který určuje co se má stát, pokud ani jedna podmínka nebude platná.


Ternální podmínky


- 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í.
- A vlastně to před otazníkem je porovnávaný výraz.
- Doporučuji však zapisovat výraz do kulatých závorek - je to přehlednější.
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é.


Dobrovolný domácí úkol


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ý


This page was loaded in 0.502038 seconds. © 2011-2025 by mimic | mimic.php5.cz
ICQ contact is 204-517-399