Operatory logiczne w PHP: &&, ||, AND, OR, ! oraz XOR
W programowaniu w PHP operatory logiczne odgrywają kluczową rolę w podejmowaniu decyzji na podstawie warunków. Dzięki nim możemy łączyć różne wyrażenia logiczne, co pozwala na bardziej złożone i elastyczne struktury kodu. W tym rozdziale omówimy sześć operatorów logicznych w PHP: &&, ||, OR, AND, !, oraz XOR. Każdy z nich ma swoje unikalne zastosowanie i zrozumienie ich działania jest kluczowe dla efektywnego programowania.
Operatory logiczne umożliwiają programistom tworzenie warunków, które mogą być używane w instrukcjach warunkowych, pętlach oraz w wielu innych kontekstach. Dzięki nim można łatwo sprawdzać, czy spełnione są określone kryteria, co jest niezbędne w każdej aplikacji. Warto również zauważyć, że różne operatory mają różne priorytety, co wpływa na sposób, w jaki są interpretowane w złożonych wyrażeniach.
Operator && (AND, logiczne „i”)
Operator && oznacza „i” i zwraca true tylko wtedy, gdy obie strony wyrażenia również są true.
Przykłady:
$a = true;
$b = true;
var_dump($a && $b); // true
$a = false;
$b = true;
var_dump($a && $b); // false
$a = true;
$b = false;
var_dump($a && $b); // false
PHP traktuje nie tylko true jako wartość prawdziwą. Poniżej kilka dodatkowych przykładów:
var_dump(5 && true); // true
var_dump("PHP" && true); // true
var_dump(0 && true); // false
var_dump("" && true); // false
Operator || (OR, logiczne „lub”)
Operator || oznacza „lub” i zwraca true, jeśli przynajmniej jedna ze stron wyrażenia jest true.
Przykłady:
var_dump(false || true); // true
var_dump(true || false); // true
var_dump(false || false); // false
Dodatkowe przykłady:
var_dump(0 || true); // true
var_dump("" || true); // true
var_dump(0 || false); // false
var_dump(null || false); // false
Operator ! (NOT, negacja)
Operator ! neguje wartość logiczną, czyli zamienia true na false i odwrotnie.
Przykłady:
var_dump(!true); // false
var_dump(!false); // true
var_dump(!0); // true
var_dump(!1); // false
Operator AND
Działa podobnie do &&, ale ma niższy priorytet wykonania.
Przykłady:
var_dump(true and false); // false
var_dump(true and true); // true
Główna różnica polega na tym, że && ma wyższy priorytet niż = (przypisanie), a AND niższy:
$a = false && true;
var_dump($a); // false
$b = false and true;
var_dump($b); // false (ale przypisanie działa inaczej niż w &&)
Operator OR
Działa podobnie do ||, ale także ma niższy priorytet wykonania.
Przykłady:
var_dump(false or true); // true
var_dump(true or false); // true
var_dump(false or false); // false
Tak jak w przypadku AND, OR ma niższy priorytet niż =:
$a = false || true;
var_dump($a); // true
$b = false or true;
var_dump($b); // false (przez inny priorytet wykonania)
Operator XOR (exclusive or)
Operator XOR zwraca true, jeśli tylko jedna z dwóch wartości jest true. Jeśli obie są true lub obie false, wynik to false.
Przykłady:
var_dump(true xor false); // true
var_dump(false xor true); // true
var_dump(true xor true); // false
var_dump(false xor false); // false
Kolejność wykonywania operatorów
Priorytet operatorów logicznych w PHP jest następujący:
&& > || > = > AND > OR
Co to oznacza w praktyce? Spójrz na ten kod:
var_dump(true or true and false); // true
var_dump((true or true) and false); // false
W pierwszym przypadku AND ma większy priorytet, dlatego true and false zwraca false, a potem true or false daje true.
Natomiast w drugim przypadku najpierw wykonywane jest true or true, a potem wynik (true) poddawany jest and false, co zwraca false.
&&orazANDdziałają podobnie, aleANDma niższy priorytet.||orazORrównież mają różnice w priorytetach.!neguje wartość logiczną.XORzwracatrue, jeśli tylko jedna wartość jesttrue.
Radzimy stosować && i || zamiast AND i OR, ponieważ są one bardziej przewidywalne i powszechnie używane. Znajomość priorytetów pozwoli uniknąć nieoczekiwanych wyników w kodzie PHP.
Podsumowanie
Zrozumienie operatorów logicznych w PHP jest niezbędne do tworzenia efektywnych i złożonych aplikacji. Dzięki nim programiści mogą precyzyjnie kontrolować przepływ logiki w swoich programach, co prowadzi do lepszej organizacji kodu i łatwiejszej jego konserwacji. Warto zatem poświęcić czas na ich naukę i praktyczne zastosowanie. Opanowanie tych operatorów pozwoli na pisanie bardziej złożonych i funkcjonalnych skryptów, co jest kluczowe w rozwoju umiejętności programistycznych.
