I am using logical operators to test variables but AND & operator work fine but OR | and Either-OR ^ always true.
Why?
$a = 6;
$b = 6;
if ($a OR $b == 3) {
echo 'true <br />';
}
else {
echo 'false <br />';
}
The issue is with your syntax.
You need to look at the expression separately.
if($a) OR if($b == 3)
is what you're doing.
What you want is:
if($a == 3 || $b == 3)
If you look at $a
by itself, any value except for 0 will return true
making the entire equation true
thanks to the OR
Because you have to OR to Boolean results - you're reading it too much like English.
if ($a == 3 || $b == 3)
rather than
if ($a OR $b == 3)
It's a matter of precedence - see http://php.net/manual/en/language.operators.precedence.php for more details here.
Both the other answers give you the code you need.
$a = true
$b = true
if($a and $b) TRUE if both $a and $b are TRUE.
Reference: http://php.net/manual/en/language.operators.logical.php