Los operaodres en PHP son fundamentales para manipular datos y construir flujos de control. Comprender las particularidades de los operadores de comparación, lógicos y de bits permite escribir scripts más robustos y optimizados.
Operadores de Comparación
Estos operadores evalúan dos expresiones y devuelven un valor booleano basándose en su relación matemática o de igualdad.
Menor que (<)
Retorna true si el operando de la izquierda es estrictamente menor que el de la derecha.
$temperaturaActual = 18;
$puntoCongelacion = 0;
var_dump($puntoCongelacion < $temperaturaActual); // Resultado: true
Menor o igual que (<=)
Devuelve true cuando el valor izquierdo es menor o idéntico al derecho.
$intentosFallidos = 3;
$limiteMaximo = 3;
var_dump($intentosFallidos <= $limiteMaximo); // Resultado: true
Operador Nave Espacial (<=>)
Conocido informalmente como el operador "TIE Fighter", realiza una comparación de tres vías. Retorna -1 si el izquiredo es menor, 0 si son iguales, y 1 si el izquierdo es mayor.
$pesoPaqueteA = 2.5;
$pesoPaqueteB = 5.0;
var_dump($pesoPaqueteA <=> $pesoPaqueteB); // Resultado: -1
Operadores Lógicos
Se utilizan para combinar expresiones condicionales. Es crucial recordar que estos operadores implementan evaluación de cortocircuito (short-circuit), lo que significa que el segundo operando solo se evalúa si es estrictamente necesario.
AND Lógico (&&)
El resultado es true únicamente si ambos operandos son verdaderos.
$esUsuarioPremium = true;
$cuentaVerificada = false;
var_dump($esUsuarioPremium && $cuentaVerificada); // Resultado: false
OR Lógico (||)
Retorna true si al menos uno de los operandos es verdadero. Debido al cortocircuito, si el primer operando es true, el segundo no se evalúa.
$tieneMascota = false;
$tieneJardin = true;
var_dump($tieneMascota || $tieneJardin); // Resultado: true
Operadores a Nivel de Bit
Estos operadores manipulan directamente los bits de los enteros, siendo útiles para optimizaciones de bajo nivel, máscaras de permisos y operaciones criptográficas.
NOT a nivel de bit (~)
Invierte cada bit del operando. En sistemas de 64 bits, los enteros tienen un tamaño fijo, y la inversión sigue la representación de complemento a dos.
$valorOriginal = 10; // Binario: ...00001010
$valorInvertido = ~$valorOriginal;
var_dump($valorInvertido); // Resultado: -11 (Complemento a dos)
AND a nivel de bit (&)
Compara cada bit de dos enteros. El bit resultante es 1 solo si ambos bits en esa posición son 1.
$permisosA = 0755; // Octal
$permisosB = 0644; // Octal
$interseccionPermisos = $permisosA & $permisosB;
var_dump(decoct($interseccionPermisos)); // Resultado: "644" (Representación octal de la intersección)