Autor Zpráva
leorond
Profil
Mohl by mi prosím někdo vysvětlit jaký rozdíl je mezi & / && / AND / OR v podmínkách? Nemyslím tím to že AND je A a OR je NEBO, děkuji.


Vlastně by mne zajímala použitelnost na nějakých jednoduchých příkladech
lionel messi
Profil
leorond:
&& / AND

Tu je jediný rozdiel v priorite, slovné operátory (AND a OR) ju majú nižšiu než && (a) resp. || (alebo)…

& / &&

& je tzv. bitové a, && (alebo and) logické.

Vlastně by mne zajímala použitelnost na nějakých jednoduchých příkladech


Príklady použitia nájdeš trebárs na uvedených linkoch smerujúcich priamo na oficiálnu PHP dokumentáciu. :-)
Zechy
Profil
leorond:
Jak už jsi říkal - AND a && je logický operátor A, tudíž když máš podmínku:
$i = 5;
if($i == 5 && $i == 8) { ... }
Tak větev if by se provedla jen v případě, že $i je rovno 5 a zároveň 8.

V případě OR nebo taky se zapisuje ještě || se jedná o NEBO
$i = 5;
if($i == 5 || $i == 8) { ... }
Se větev IF provede v případě, že $i je rovno 5 nebo se rovná 8.


A jak už psal lionel messi, pokud jsou v podmínkách operátory zkombinované, provede se nejdříve AND a poté OR.
leorond
Profil
Děkuji takto mi to stačí, zajímalo mne zda použití například & a AND má stejný význam nebo je tam nějaký rozdíl.
juriad
Profil
& je bitový operátor na číslech
1 & 1 = 1
12 & 5 = 4
5 & 0 = 0
5 & 2 = 0
Pokud tento příklad nechápeš, nemusíš tento operátor vůbec znát.

&& je logický operátor na pravdivostních hodnotách
true && true = true
false && true = false

and je logický operátor, stejně jako &&, ale má menší prioritu
$x = true && false; # x bude false
$x = true and false; # x bude true
jakoby to bylo uzávorkováno:
$x = (true && false);
($x = true) and false;
To je důvod, proč operátor and je užitečný jen zřídka a doporučuji jej nemíchat s operátorem &&.


Podobně existují operátory |, || a or. Mají význam „nebo“ a mají o stupeň menší prioritu než jejich zvýše zmínění bratříči.
Tomáš123
Profil
leorond:
Bitový AND (&) (súčin):
1 1 0 1 0
0 1 0 0 1
---------
0 1 0 0 0
1 ak oba bity sú 1.

Bitový OR (|) (súčet):
1 1 0 1 0
0 1 0 0 1
---------
1 1 0 1 1
1 ak je aspoň jeden z bitov 1.

Vezmime si juriadov príklad 12 & 5 = 4.
12 je binárne 1100; 5 je binárne 0101:
1 1 0 0
0 1 0 1
-------
0 1 0 0
& značí, že 1 je iba tam, kde je na oboch bitoch 1. 100 binárne je 4 v desiatkovej sústave.

12 | 5 by sa vyhodnotil ako 13.

juriad:
($x = true) and false;
Prečo sa toto vyhodnotí ako true, prosím?
juriad
Profil
Tomáš123:
„($x = true) and false;“
V $x bude true, ale vyhodnotí se to jako false, které se zahodí.

Podobně jako výraz
($x = 5) + 2;
je roven 7, ale ta sedmička se nikam neuloží.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0