Operadores lógicos
Los operadores lógicos son operadores de comparación sobre
variables lógicas, es decir, sobre aquellas cuyos valores sean únicamente: VERDADERO o FALSO
$A AND $B
El operador
AND devuelve VERDADERO (1) unicamente
cuando todas la variables lógicas comparadas son verdaderas y devuelve FALSO (0) cuando
al menos una de la variables lógicas tiene el valor de FALSO.
$A && $B
El operador
&& se comporta de forma idéntica al operador
AND. La única diferencia entre ambos según dice el
Manual oficial de PHP es que
operan con distinta precedencia.
Como
.. donde Dios no da... Salamanca no presta... no he podido saber -por el momento- cual es esa diferencia, ambos son asociativos por la izquierda y al construir
tablas de verdad con ambos, los resultados
parecen idénticos tal como puedes ver el los ejemplos de la derecha.
$A or $B
Para que el operador
OR devuelve VERDADERO (1) es suficiente que
una sola de las variables lógicas comparadas sea verdadera y solo devolverá FALSO (0) cuando
todas ellas sean FALSAS.
$A || $B
El operador
|| se comporta de forma idéntica al operador
OR.
Son válidos los comentarios hechos con relación a
AND y
&&.
$A XOR $B
El operador
XOR devuelve VERDADERO (1) cuando
ES CIERTO UNA SOLA de los dos variables lógicas comparadas y FALSO (0) cuando AMBAS son CIERTAS o cuando AMBAS son FALSAS.
$A XOR $B XOR $C
Es equivalente a
($A XOR $B) XOR $C . Es decir, realiza la comparación de las
dos primeras variables y luego
compara el resultado con la
tercera de las variables.
! $A
Este operador (negación) devuelve VERDADERO si la variable lógica $A es FALSA y devuelve FALSO si el valor de la variable $A es VERDADERO.
Observaciones
Fíjate en las
tablas de verdad, cuando el resultado es FALSO el operador
XOR devuelve el caracter NUL, sin embargo los demás operadores devuelven CERO.
¿Por qué?.
Ni idea..., si consigo averiguarlo lo pondré aquí y si tu sabes el por qué y la incidencia... no dejes de avisarme.