Logical operators are used to combine multiple Boolean statements and get the overall final result.
Following table summarizes different logical operators supported in php.
Operator |
Name |
Example |
Description |
and |
And |
$a and $b |
Return true if both $a and $b are true. |
or |
Or |
$a or $b |
Return true if either $a or $b is true. |
xor |
Xor |
$a xor $b |
Return true if either $a or $b is true, but not both. |
! |
Not |
!a |
Return true if $a is false, return false if $a is true. |
&& |
And |
a && b |
Return true if both $a and $b are true. |
|| |
Or |
a || b |
Return true if either $a or $b is true. |
Let’s see it with an example.
logical_operators_demo.php
#!/usr/bin/php
<?php
// Logical And operator
$a = (false and false);
$b = (false and true);
$c = (true and false);
$d = (true and true);
$e = (false && false);
$f = (false && true);
$g = (true && false);
$h = (true && true);
// Logical or
$i = (false or false);
$j = (false or true);
$k = (true or false);
$l = (true or true);
$m = (false || false);
$n = (false || true);
$o = (true || false);
$p = (true || true);
$q = (false xor false);
$r = (false xor true);
$s = (true xor false);
$t = (true xor true);
$u = (! true);
$v = (! false);
echo '(false and false) : ';
var_dump($a);
echo '(false and true) : ';
var_dump($b);
echo '(true and false) : ';
var_dump($c);
echo '(true and true) : ';
var_dump($d);
echo '(false && false) : ';
var_dump($e);
echo '(false && true) : ';
var_dump($f);
echo '(true && false) : ';
var_dump($g);
echo '(true && true) : ';
var_dump($h);
echo '(false or false) : ';
var_dump($i);
echo '(false or true) : ';
var_dump($j);
echo '(true or false) : ';
var_dump($k);
echo '(true or true) : ';
var_dump($l);
echo '(false || false) : ';
var_dump($m);
echo '(false || true) : ';
var_dump($n);
echo '(true || false) : ';
var_dump($o);
echo '(true || true) : ';
var_dump($p);
echo '(false xor false) : ';
var_dump($q);
echo '(false xor true) : ';
var_dump($r);
echo '(true xor false) : ';
var_dump($s);
echo '(true xor true) : ';
var_dump($t);
echo '(!true) : ';
var_dump($u);
echo '(!false) : ';
var_dump($t);
?>
Output
$./logical_operators_demo.php
(false and false) : bool(false)
(false and true) : bool(false)
(true and false) : bool(false)
(true and true) : bool(true)
(false && false) : bool(false)
(false && true) : bool(false)
(true && false) : bool(false)
(true && true) : bool(true)
(false or false) : bool(false)
(false or true) : bool(true)
(true or false) : bool(true)
(true or true) : bool(true)
(false || false) : bool(false)
(false || true) : bool(true)
(true || false) : bool(true)
(true || true) : bool(true)
(false xor false) : bool(false)
(false xor true) : bool(true)
(true xor false) : bool(true)
(true xor true) : bool(false)
(!true) : bool(false)
(!false) : bool(false)
&& vs and, || vs or
Php has two different variations of "and" and "or" operators is that they operate at different precedence. && takes precedence over the = operator, whereas = operator takes precedence over 'and' operator.
Example
$a = true && false;
Above statement evaluates to false, but if you apply ‘and’ operator to the same snippet, it evaluates to true.
$b = true and false;
Since = has greater precedence over 'and', above statement is evaluated like below
($b = true) and false;
Find the below working application.
logical_operator_precedence_demo.php
#!/usr/bin/php
<?php
$a = true && false;
$b = true and false;
echo '$a = ';
var_dump($a);
echo '$b = ';
var_dump($b);
?>
Output
$./logical_operator_precedence_demo.php
$a = bool(false)
$b = bool(true)
Logical and, &&, or, || are called as short circuit operators
Logical and, &&: if the first statement in the expression evaluates to false, then php won't evaluates the entire expression.
Logical or, ||: if the first statement evaluates to true, then php won't evaluates the entire expression.
short_circuit_operator_demo.php
#!/usr/bin/php
<?php
function say_hello()
{
echo "I am in hello";
return true;
}
// say_hello() function will not get called in all the below cases
$a = false && say_hello();
$b = false and say_hello();
$c = true || say_hello();
$d = true or say_hello();
echo '$a = ';
var_dump($a);
echo '$b = ';
var_dump($b);
echo '$c = ';
var_dump($c);
echo '$d = ';
var_dump($d);
?>
Output
$./short_circuit_operator_demo.php
$a = bool(false)
$b = bool(false)
$c = bool(true)
$d = bool(true)
Previous Next Home
No comments:
Post a Comment