Rozhodování

V předchozím díle jsme se dozvěděli, jak ukládat a vypisovat proměnné. To by byla celkem nudná práce, pokud by toho PHP nemohlo nabídnout více.

Prvním úkolem, který budeme chtít po počítači je, aby rozhodoval o pravdivosti našich výroků. Slouží k tomu funkce if.

<?php
$pravda = true; // true je pravdivostni hodnota "Pravda"
if ($pravda) {
    echo 'Pravda'; // Pravda
}

Podle kódu vidíte jednoduchou konstrukci funkce if. Za klíčovým slovem if je v závorce výraz, u kterého se určuje pravdivostní hodnota. Tento výraz může být i složený z více vnitřních výrazů. Ke spojování těchto výrazů slouží ..

VýznamZápisZkrácený zápisPříklad
Průnik (musí platit A i B zároveň)AND&&if ($a && $b) {
    // Platí $a i $b
}
Sjednocení (musí platit alespoň jedno z A a B)OR||if ($a || $b) {
    // Platí $a nebo $b nebo obě dvě
}
Rozdíl (musí platit A nebo B, ale ne obě najednou)XORxorif ($a xor $b) {
    // Platí $a nebo $b, ale ne obě
}
Doplněk – negace (musí platit, že neplatí A)NOT!if (!$a) {
    // Platí, že neplatí $a
}
Je rovno==if ($a == $b) {
    // Hodnota $a je stejná, jako hodnota $b
}
Není rovno!=
if ($a != $b) {
    // Hodnota $a není stejná, jako hodnota $b
}

Nyní už víme, jak napsat kód ve smyslu Když je to pravda, tak udělej tohle. Nyní si ukážeme, jak tuto větu doplnit … a když to není pravda, tak udělej tohle.

<?php
$a = true; // pravda
$b = false; // nepravda

if ($a && $b) { // není pravda, protože $b není pravda
   // blok kódu, pokud by to byla pravda
} else {  // když předchozí podmínka není pravdivá
   echo 'Jsi lhář!';
}

Podmínky můžeme i skládat za sebe.

<?php
$a = true; // pravda
$b = false; // nepravda

if ($a) {
   // blok kódu, pokud $a je pravda
} else if ($b) {
    // blok kódu, pokud $b je pravda
} else {
    // blok kódu, pokud $a ani $b není pravda
}

Poslední příklad může mít i speciální variantu, pokud se ptáme pravdivostní hodnotu stále stejného výrazu. Pak existuje jednodušší, speciální funkce switch.

<?php
$zvire = 'pes';

// zápis ve funkci if
if ($zvire == 'kočka') {
   echo 'Zvíře je kočka';
} else if ($zvire == 'pes') {
   echo 'Zvíře je pes';
} else if ($zvire == 'kůň') {
   echo 'Zvíře je kůň';
} else {
   echo 'Není to žádné známé zvíře';
}

// zápis ve funkci switch
switch ($zvire) {
   case 'kočka': // podmínka, jestli je $zvire == kočka
        echo 'Zvíře je kočka';
        break; // ukončení podmínky
   case 'pes':
        echo 'Zvíře je pes';
        break;
   case 'kůň':
        echo 'Zvíře je kůň';
        break;
    default: // pokud neplatí ani jedna z uvedených možností
        echo 'Není to žádné známé zvíře';
}

Následující kapitola