Definitie
Operatorii logici sunt folositi pentru a opera cu valori boolene iar rezultatul acestor operatori este tot o valoare booleana.
&& |
SI logic. Rezultatul este true daca ambii operanzi sunt evaluati boolean ca true. |
|| |
SAU logic. Rezultatul este true daca cel putin unul din cei doi operatori este evaluat boolean ca true. |
and |
SI logic. Similar cu && dar cu o prioritate mai mica. |
or |
SAU logic. Similar cu or dar cu o prioritate mai mica |
xor |
SAU exclusiv true daca operanzii sunt diferiti, si false daca operanzii sunt egali. |
Alt operator logic este "!". Doar ca are un singur operand, si se aseaza in fata acestui operand. Operatorul inverseaza valoarea booleana a operatorului.
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
10
11
12
| <?php
$a = true;
$b = !$a;
var_dump($b);
if (!$b) {
echo 'e adevarat';
}
?> |
| 1
2
| bool(false)
e adevarat |
|
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
| <?php
var_dump(true && false);
var_dump(true && true);
var_dump(true || false);
var_dump(false || true);
?> |
| 1
2
3
4
| bool(false)
bool(true)
bool(true)
bool(true) |
|
pot folosi paranteze pentru a dicta ordinea operatiilor.
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
| <?php
$a = false && (false || true);
var_dump($a);
$a = false && false || true;
var_dump($a);
?> |
| 1
2
| bool(false)
bool(true) |
|
Nota
| Operatorii logici evalueaza operanzii ca valori booleene. |
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| <?php
$a = 1;
$b = 0;
if ($a || $b) {
echo 'e adevarat';
}
echo "\n";
var_dump($a || $b);
var_dump($a);
var_dump($b);
var_dump("" || 0);
?> |
| 1
2
3
4
5
| e adevarat
bool(true)
int(1)
int(0)
bool(false) |
|
Important
Operatorii &&, and, ||, or, functioneaza cu "scurtcircuitare", adica al doilea operand nu este evaluat daca se poate stabili rezultatul sigur al operatiei logice doar din primul operand.
Acest lucru este important atunci cand al doilea operand este de exemplu apelarea unei functii, pentru ca functia poate fi (sau nu) apelata in functie de acest lucru.
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <?php
function scrie($ceva)
{
echo $ceva;
echo "\n";
return false;
}
$a = true || scrie('ceva cu || ');
$a = false || scrie('altceva cu || ');
$a = true or scrie('ceva cu or');
$a = true && scrie('ceva cu &&');
?> |
| 1
2
| altceva cu ||
ceva cu && |
|
Diferenta de prioritate intre && si and, si intre || sau or, poate fi importanta in anumite cazuri. Pentru detalii, vezi capitolul din php manual
Operators precedence.
Un exemplu clasic, este codul:
$link = mysql_connect(...) or die('Eroare la conectare'); folosit uneori pentru conectarea la baza de date.
Sursa script | Sursa HTML in browser |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <?php
function test($s)
{
echo $s;
echo "\n";
return true;
}
$a = false or test(1);
$b = false || test(2);
var_dump($a);
var_dump($b);
?> |
| 1
2
3
4
| 1
2
bool(false)
bool(true) |
|