LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP (10) - Logické výrazy a operátory

Logické výrazy a operátory v PHP.

11.6.2004 15:00 | Petr Zajíc | Články autora | přečteno 121087×

Logické operátory se v PHP víceméně neliší od stejných operátorů v jiných programovacích jazycích, ale to neznamená, že je v našem tutoriálu vynecháme. Pojďme se tedy podívat, jak se používají. Pokud logické výrazy chronicky znáte z jiných programovacích jazyků, možná můžete tento díl přeskočit.

Již jsme si uvedli, že PHP má datový typ boolean reprezentovaný hodnotami TRUE a FALSE. Má také operátory, které Vám umožní s nimi pracovat. Především bychom si měli ale říci, že pro logické operace se nedoporučuje používat klasické operátory "+", "-", "*" a "/". Když to uděláme, neskončí to chybou, protože PHP provede přetypování. Nicméně, chování programu bude většinou zvláštní. Dokázali byste si například tipnout, co vrátí následující kód?

<?
$pravda
=TRUE;
echo
"Logický nesmysl ".$pravda + $pravda."<BR>\n";
?>

Asi se Vám to první pohled bude zdát divné, ale výsledkem bude pouhá jednička. PHP totiž první řetězec převedl na LOGICKOU hodnotu a pak s ní tak pracoval. Z toho je myslím patřičně vidět, že potřebujeme logické operátory. V PHP existují následující:

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á

Několik příkladů to vysvětlí:

<?
// jestliže například
$mam_papir=TRUE; $mam_inkoust=TRUE;
// ... je jasné, že
$mohu_tisknout=$mam_papir && $mam_inkoust;
// což je totéž jako
$mohu_tisknout=$mam_papir and $mam_inkoust;
?>

Tady se jednalo o logický součin. Pokud chci tisknout, musím mít jak papír, tak i inkoust.

<?
// jestliže například
$mam_penize_doma=FALSE; $mam_penize_v_bance=TRUE;
// ... je jasné, že
$mam_penize=$mam_penize_doma || $mam_penize_v_bance;
// což je totéž jako
$mam_penize=$mam_penize_doma or $mam_penize_v_bance;
?>

Tady se jednalo o logický součet. Peníze mám jak v případě, že jsou doma, tak i v případě, že jsou v bance ;-))). Peníze mám dokonce i případě, že jsou jak doma tak i v bance, proto se jedná o neexkluzivní OR.

<?
$mam_malo_penez
= true;
$jsem_bohaty = !$mam_malo_penez;
echo (integer)
$jsem_bohaty;
?>

Negace je myslím jasná. Jestliže mám málo peněz, pak nejsem bohatý. Ve skriptu si můžete všimnout jedné věci: nevypsal jsem hodnotu proměnné $jsem_bohaty, ale její reprezentaci jakožto celého čísla. Echo $jsem_bohaty by vrátilo prázdný řetězec, současný kód však vrací nulu. Proč je to tak bylo popsáno v díle o přetypování proměnných.

Logické exkluzivní OR (XOR) se používá v programování především na šifrovací algoritmy a pro psaní webů se bez něj asi obejdate. Ať přemýšlím jak přemýšlím, nepodařil se mi najít žádký příklad z praxe, který by jej dostatečně ilustroval a ve svých skriptech jsem ho nikdy nepoužil.

Dva operátory pro logický součet a dva operátory pro logický součit se od sebe liší prioritou. Bude o tom řeč v příštím díle našeho seriálu.

Poznámky k logickým výrazům

  • Naučte se je. Bude to potřeba.
  • PHP nemá logický operátor NOT. Má místo toho vykřičník (!), který se píše před negovaný výraz.
  • Některé PHP funkce vracejí logické hodnoty, například TRUE v případě úspěchu, FALSE v případě neúspěchu
  • Nepleťte si toto: AND není logický součet, ale součin. Zapamatujte si "a zároveň".
  • Když si nebudete jisti tím, jak se vyhodnocuje složitější logický výraz, není žádná ostuda rozdělit jej na několik jednodušších.

K logickým operátorům ještě jedna důležitá poznámka. Vždycky nemáme při programování to štěstí, že logické výrazy jsou rovny buď FALSE nebo TRUE. Při práci s databázemi se velice často stává, že musíme sáhnout k "třístavové logice". Více o tom bude pojednáno v některém díle o MySQL, ale měli bychom poznamenat, že z hlediska databází je někdy logická hodnota buď TRUE, nebo FALSE nebo NEZNÁMÁ (NULL). Pozor na to. Setkáte se s tím.

Příště se v našem seriálu podíváme na operátory, na které se zatím nedostalo, a na prioritu operátorů.

Verze pro tisk

pridej.cz

 

DISKUZE

Logický součet 4.2.2008 00:33 Dan Pelíšek
  L Re: Logický součet 4.2.2008 02:08 Aleš Hakl
    L Re: Logický součet 4.2.2008 14:43 Dan Pelíšek




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

18.9.2018 23:30 /František Kučera

Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.


Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze