Naučíme sa pracovať s logickými operátormi a hodnotami. Poznatky, ktoré tu získate, sa vám budú hodiť najmä pri vetvení.
Logické hodnoty sú vždy len dve: pravda (true) a nepravda (false). V PHP sa pravda znázorňuje aj akýmkoľvek číslom okrem nuly, nepravda nulou.
$pravda = true; $pravda = 1; $nepravda = false; $nepravda = 0;
Ak skúsime vypísať false, nič sa nevypíše.
echo false;
Skúsime teda malý trik. Zmeníme typ hodnoty na int - celé číslo. Typ sa mení napísaním jeho názvu v zátvorkách pred daným údajom.
echo (int) false;
Príklad vypíše nulu. Pretypovaním true na celé číslo získame jednotku.
Ak chceme porovnať dva výrazy, vložíme medzi ne niektorý z porovnávacích operátorov. Napríklad
echo (int) 3 > 7;
vypíše 1 (pravda). Existujú nasledujúce porovnávacie operátory:
| operátor | význam |
|---|---|
| == | rovná sa |
| === | rovná sa a je rovnakého typu |
| != | nerovná sa |
| <> | to isté ako != |
| !== | nerovná sa alebo nie je rovnakého typu |
| < | je menšie ako |
| > | je väčšie ako |
| <= | je menšie alebo rovné |
| >= | je väčšie alebo rovné |
Uvediem ešte jeden príklad.
$cislo = 15; $retazec = "15"; $vysledok = ($cislo === $retazec); echo (int) $vysledok;
Výsledok je nepravda (0), pretože číslo 15 nie je rovnakého typu ako reťazec "15".
Ak spojíme viac logických hodnôt pomocou operátorov a zátvoriek, vznikne zložený logický výraz.
Operátor && spôsobí, že zložený výraz bude pravdivý, len ak sú obidve hodnoty pravdivé.
$a = true; $b = true; echo (int) $a && $b; // vypíše: 1
Podobne funguje ||, no teraz stačí, aby aspoň jedna hodnota bola pravdivá.
$a = true; $b = false; echo (int) $a || $b; // vypíše: 1
Podobnú funkciu majú operátory and (a) a or (alebo). Majú však veľmi malú prioritu, teda najprv sa vyhodnotí výraz na ľavej a pravej strane a až potom sa výrazy spoja daným operátorom.
$pravda = 1; $nepravda = 0; echo (int) ($pravda or $nepravda && false);
Najskôr sa vyhodnotil čiastkový výraz $nepravda && false, čoho výsledok je 0. Až potom $pravda or 0, takže príklad vypísal číslo 1.
Existuje ešte operátor xor. Výraz vráti pravdu, ak práve jedna hodnota je pravdivá.
echo (int) (true xor false); // 1 echo (int) (true xor true); // 0
Predchádzahúci príklad mi „zhodil“ Apache, ale asi to bude len PHP bug.