Začínáme s PHP - logické operátory (10.díl)

Napsal Mgr.Radovan Kaluža (») 16. 6. 2004 v kategorii PHP/HTML, přečteno: 3687×

Je tato žena mladší 25 let a zároveň má milion. Jak to napsat v PHP.

V minulých dílech, jsme si probrali problematiku podmínek. Uvedl jsem pouze základní možnost a to že podmínka je jediná. V tomto případě podmínka nabývá hodnoty PRAVDA (true) anebo NEPRAVDA (false). Níže uvedený příklad nám zjistí zdali proměnná $a podmínku ($ak<0) splňuje (TRUE) resp. nesplňuje.

$a=3; if ($a<0)
{ print "menší než nula"; }
?>

Často se však potřebujeme ohodnotit najednou více proměnných, kupříkladu je osoba vybraná z DB (databáze) žena a je mladší 25 let, pokud ano tato žena nás zajímá. V tomto případě můžeme zvolit proměnné $je_zena která nabývá TRUE nebo FALSE (1 nebo 0) a $vek který bude nabývat hodnoty věku dané osoby. Všechny údaje vytáhneme většinou někde z databáze (to později) ale pro modelovaný případ, budeme tyto údaje mít k dispozici.

<?
$je_zena=true;
$vek=22;
if (($vek<25)and($je_zena))
{ print "tato žena vyhovuje"; } else {print "nevyhovuje";};
?>

pokud bychom chtěli zjisti, zdali má méně než 25 nebo 25let napíšeme operátor menší-rovno (<=) if ($vek<=25), analogicky existuje (>=).

a b not a a and b a or b a xor b
1 1 0 1 1 0
1 0 0 0 1 1
0 1 1 0 1 1
0 0 1 0 0 0
česky negace a a a b a nebo b a nebo b ale ne současně
příklad v PHP  ! $a $a and $b $a or $b $a xor $b


výrok a může být třeba podmínka (X>5), pokud je podmínka splněna a je rovno TRUE (v tabulce je to zkráceně jednička) resp. pokud není splněna je a rovno nule (false), výrok b může být opět nějaký jiný logický výrok. Tabulka ukazuje možnosti co se stane, když použijeme kupříkladu a or b, to znamená že bud výrok a je pravdivý, nebo výrok b a nebo oba. Formule můžou být i složitější ((a and b) or (c xor a)), postupně zde vyhodnotíme formule v závorkách a potom obě závorky dohromady. Pokud bude zájem, uvedu více teorie z oblasti výrokové logiky.

Rozšíříme si úvodní příklad, a bude nás zajímat zdali má žena méně jak 25 let a nebo zdali má aspoň milion na kontě.

<?
$je_zena=true;
$vek=22;
$konto=1500000; if ((($vek<25) or ($konto>=1000000))and($je_zena))
{ print "<br>tato žena vyhovuje - má milion nebo je mladší 25let, nebo oboji"; } else {print "<br>nevyhovuje";};
?>

No jo, ale jak nás může zajímat žena mladší 25 let s milionem na účtu (to ji asi nebudeme zajímat my). Takže buď bude mladší 25let nebo bude mít milión a více, ale ne oboji. Použijeme místo or operátor xor.

<?
$je_zena=true;
$vek=22;
$konto=1500000; if ((($vek<25) xor ($konto>=1000000))and ($je_zena))
{ print "<br>tato žena vyhovuje - má milion nebo je mladší 25let, ne však oboji"; } else {print "<br>nevyhovuje";};
?>

Zkuste v posledním příkladu věk zvýšit na více jak 25, potom konto méně jak na milion a pak vše dohromady.
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel osm a šest