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.