Operadores de comparación y lógicos en PHP.

Resumen.

Establecer igualdades y diferencias entre variables es algo muy común en cualquier lenguaje de programación. Las relaciones que se pueden establecer entre variables pueden ser de dos tipos: las comparativas, que establecen igualdad o diferencias en al algún sentido, o las lógicas, relativas a la respuesta que se da cuando una, todas o ninguna de las variables cumplen un cierto criterio. Estas funciones dependen de las ya comentadas estructuras condicionales, en este capitulo veremos cómo.

Artículo.

Algo común en cualquier lenguaje de programación es establecer igualdades o diferencias entre variables y la aplicación de las reglas de la lógica. A esto vamos a dedicar este capitulo.

Empezaremos con los operadores de comparación y veremos como usarlos mediante el condicional else.

Con los operadores de comparación debemos tener en cuenta que no tenemos solo en cuenta el valor de la variable, también tenemos en cuenta el tipo de variable que nos lo da la función gettype().

Con operador igual (==) el valor de las variables es el mismo, aunque el tipo de variable sea diferente.


<?php

/* Operador == El valor de las variables es el mismo, no tiene en cuenta el tipo de variable */

$valor1 = 12;
$valor2 = '12';

$tipo1 = gettype($valor1);
$tipo2 = gettype($valor2);

echo "<p>$valor1 - $tipo1 <br />
$valor2 - $tipo2</p>";

if($valor1 == $valor2){
// Las variables tienen el mismo valor
echo 'Las variables son iguales pero no identicas.';
}else{
// Las dos variables NO tienen el mismo valor
echo 'Las variables son diferentes.';
}
?>


Con operador idéntico (===) el valor de las variables es el mismo, y el tipo de variable también es el mismo.

<?php

/* Operador == El valor de las variables es el mismo, no tiene en cuenta el tipo de variable */

$valor1 = 12;
$valor2 = '12';

$tipo1 = gettype($valor1);
$tipo2 = gettype($valor2);

echo "<p>$valor1 - $tipo1 <br />
$valor2 - $tipo2</p>";

if($valor1 === $valor2){
// Las variables tienen el mismo valor y son del mismo tipo
echo 'Las variables son identicas.';
}else{
// Las variables NO tienen el mismo valor o son de diferente tipo
echo 'Las variables NO son identicas.';
}
?>

Ya hemos visto como realizar una comparación entre variables, veamos a modo de resumen todas las posibles comparaciones.

Con == el valor de la variable es el mismo. No tiene en cuenta el tipo de variable IGUAL.
Con === el valor de la variable es el mismo. Tiene en cuenta el tipo de variable IDENTICO.
Con != el valor de la variable es diferente. No tiene en cuenta el tipo de variable DISTINTO.
Con <> el valor de la variable es diferente. No tiene en cuenta el tipo de variable DISTINTO.
Con !== el valor de la variable es diferente. Tiene en cuenta el tipo de variable NO IDENTICO.
Con < menor que.
Con > mayor que.
Con <= menor o igual que.
Con >= mayor o igual que.
NOTA: = no es un operador de comparación, es un operador de asignación. Los comparadores != y <> son equivalentes, pueden usarse uno u otro indistintamente.

Continuamos ahora con los operadores lógicos y veremos como usar estos operadores.

Operador AND (o &&).- Con este operador determinamos si al menos dos variables coinciden, podemos aplicarlos mediante el condicional else de la siguiente manera:

<?php

/* Operador AND: se cumple la condición A y la B */
/* Es equivalente a && */
/* $nombre == 'Juan' && $ciudad == 'Sevilla' */

$nombre = 'Juan';
$ciudad = 'Sevilla';

if($nombre == 'Juan' AND $ciudad == 'Sevilla'){
// AND es verdadera
echo 'Existe coincidencia.';
}else{
// AND es falsa
echo 'No existe coincidencia.';
}

?>

Operador OR.- Con este operador determinamos si al menos una variable coincide.


<?php
/* Operador OR: se cumple la condición A o la B */

$nombre = 'Juan';
$ciudad = 'Madrid';

if($nombre == 'Juan' OR $ciudad == 'Sevilla'){
// OR es verdadera
echo 'Existe coincidencia.';
}else{
// OR es falsa
echo 'No existe coincidencia.';
}

?>

Operador XOR.- Con este operador determinamos si una o mas variables coinciden, pero no todas.


<?php
/* Operador XOR: se cumple alguna condición A o la B */

$nombre = 'Juan';
$ciudad = 'Madrid';

if($nombre == 'Juan' XOR $ciudad == 'Sevilla'){
// XOR es verdadera
echo 'Existe coincidencia.';
}else{
// XOR es falsa
echo 'No existe coincidencia.';
}

?>


Y con esto terminamos con las funciones lógicas, de las que hemos expuesto las mas usadas. Estas funciones pueden resultar un poco confusas, ya que, en función de en que parte del condicional ejecutemos un cierto código, podremos obtener una respuesta o la contraria. ¿Resulta esto confuso? Si, pero no tanto como parece, es lógico pensar que con la función AND que nos dice si dos variables son iguales, en caso contrario, también podemos saber si son diferentes a través de la estructura condicional que la contiene.

Más información sobre funciones lógicas y su precedencia en la página oficial
Tags: AND || OR || XOR || gettype || lógicos || comparación

Comentarios.

Sin comentarios, publica el tuyo.