Logické operátory jsou v PHP úplně stejné, jako v jiných jazycích, tedy pokud s nimi umíte, víte přesně k čemu jsou, můžete tuto kapitolu možná přeskočit, v opačném případě si ji radši přečtěte, jistě je budete potřebovat. Některé funkce vracejí hodnoty typu TRUE nebo FALSE. V PHP máme šest druhů logických operátorů, jsou shrnuté v této tabulce:
Operátor | Význam | Pravda když |
and | Logický součin | Jsou obě hodnoty pravdivé |
or | Logický součet | Je alespoň jedna hodnota pravdivá |
xor | Exkluzivní OR | Je právě jedna hodnota pravdivá |
! | Negace | True když bylo False a naopak |
&& | Logický součin | Jsou obě hodnoty pravdivé |
|| | Logický součet | Je alespoň jedna hodnota pravdivá |
Nyní se tedy podíváme, jak se tyto logické operátory používají a začneme logickým operátorem AND.
$mam_benzin=TRUE;
$mam_auto=TRUE;
$mohu_ridit=$mam_benzin && $mam_ridicak;
?>
Tento kód je stejný, jako tento:
$mam_benzin=TRUE;
$mam_auto=TRUE;
$mohu_ridit=$mam_benzin AND $mam_ridicak;
?>
Jedná se o logický součin, tedy obě podmínky musí být splněny, pokud nebude splněna byť jen jedna z nich, nebudu moci řídit auto.
Nyní si uvedeme příklad logického operátoru OR.
$mam_hamburger = TRUE;
$mam_parek_v_rohliku = TRUE;
$mohu_jist = $mam_hamburger || $mam_parek_v_rohliku;
?>
Tento kód je opět stejný, jako tento:
<?php
$mam_hamburger = TRUE;
$mam_parek_v_rohliku = TRUE;
$mohu_jist = $mam_hamburger OR $mam_parek_v_rohliku;
?>
V tomto případě se jednalo o logický součet, tedy pokud je alespoň jedna z podmínek splněna, mohu se najíst, ovšem v případě, že jsou splněny obě, tak se najím taky, v tomto případě by se jednalo o neexkluzivní součet.
Nyní se podíváme na negaci.
$mam_mnoho_benzinu = true;
$nemohu_jet_daleko = !$mam_mnoho_benzinu;
?>
Pokud mám hodně benzínu, mohu jet daleko, nicméně když zneguji mnoho benzínu, dostávám málo benzínu, z toho důvodu nemohu jet daleko. Myslím, že negace je z příkladu jasná, jedná se v podstatě o opak.
Logické exkluzivní OR (XOR), no, co k ním dodat, na programování webu jej jistě potřebovat nebudete, pokud tedy nebudete vytvářet nějaký šifrovací algoritmus. Nikdy jsem jej nepoužil a tak mě ani nenapadá příklad, pro který by se dali použít a aby to nebyl nesmysl.