Los operadores relacionales son aquellos que ayudan a comparar dos valores.
Operadores relacionales en PHP
En PHP disponemos de estos operadores:
Nombre
Descripción
Operador
Ejemplo
Resultado
Igual
Compara si 2 variables son iguales en cuanto a sus valores más NO respecto a sus tipos de datos.
==
$a == $b
true si $a es igual a $b
Idéntico
Compara si 2 variables son iguales respecto a sus valores y tipos de datos.
===
$a === $b
true si $a es igual a $b, y son del mismo tipo.
Diferente #1
Compara si 2 variables NO son iguales en cuanto a sus valores más NO respecto a sus tipos de datos.
!=
$a != $b
true si $a no es igual a $b
Diferente #2
Compara si 2 variables NO son iguales en cuanto a sus valores más NO respecto a sus tipos de datos.
<>
$a <> $b
true si $a no es igual a $b
No idéntico
Compara si 2 variables NO son iguales en cuanto a sus valores o tipos de datos.
!==
$a !== $b
true si $a no es igual a $b, o si no son del mismo tipo.
Menor que
Evalúa si un número es menor que otro.
<
$a < $b
true si $a es estrictamente menor que $b.
Mayor que
Evalúa si un número es mayor que otro.
>
$a > $b
true si $a es estrictamente mayor que $b.
Menor o igual que
Evalúa si un número es menor o igual que otro.
<=
$a <= $b
true si $a es menor o igual que $b.
Mayor o igual que
Evalúa si un número es mayor o igual que otro.
>=
$a >= $b
true si $a es mayor o igual que $b.
Operadores especiales
PHP posee un par de operadores que en la mayoría de lenguajes, si es que en ninguno, no los encuentras y están disponibles a partir de la versión 7. Estas tienen el nombre de Nave espacial y Fusión de null.
Nave espacial (<=>)
Está representado por el siguiente símbolo: <=>. Evalúa si un número es menor que, igual a o mayor que otro, dando como resultados -1, 0 o 1 respectivamente:
<?php# Variables$a=10;$b=5;echo$a<=>$b;echo"\n";#----------------------------------/*
Mensaje en consola/navegador:
1
*/
La forma en que <=> evalúa es la siguiente:
Si $a es menor que$b entonces devolverá -1.
Si $a es igual a$b entonces devolverá 0.
Si $a es mayor que$b entonces devolverá 1.
Fusión de null (??)
Está representado por el siguiente símbolo: ??. La primera variable que SÍ esté definida y no sea null, de izquierda a derecha, es la que será utilizada. Veamos un ejemplo para entender mejor este tipo de operador:
<?php# Variables:$a=null;$b=40;$c=18;echo$z??$a??$b??$c;echo"\n";#----------------------------------/*
Mensaje en consola/navegador:
40
*/
Observamos que $b y $c Sí están definidas y no son null, pero como $b está antes que $c, tomando el orden de izquierda a derecha, esta es la que será impresa en pantalla. Por ello el resultado es 40.
Si el numero de la izquierda es mayor el numero de la derecha, el resultado será 1
Si el numero de la derecha es igual que el numero de la izquierda , el resultado será 0
Si el numero de la izquierda es menor que el numero de la derecha, el resultado será 1
Fusión de Null, ??
$edad_pepito=23;echo$edad_juanito?? edad_pepito;// Si la edad de Juanito no esta definida, usa la edad de pepitoecho"\n";
gracias por tomarse tu tiempo y hacerlo, fue de mucha ayuda
Genial!👏😀
En Ruby al operador espacial se le conoce como Operador de comparación combinado (o al menos yo le conozco así) y funciona exactamente igual.
Por cierto, inicié mi aprendizaje de programación con Ruby y actualmente pienso que es muy cierta la frase de: "Si dominas un Lenguaje de programación, se te hará más fácil aprender otro", este curso se me ha hecho más entendible y amigable, claro, aparte que @RetaxMaster es muy agradable para explicar.
Mi recomendación: Procuren aprender muy bien un lenguaje y luego se mudan a aprender otros que le interesen, les será mucho más fácil ;)
Gracias por la info
Operadores relacionales
Son usados en PHP para la comparación entre valores
Operador
Descripción
==
Igual a
===
Idéntico a
!=
Diferente de
<>
Diferente de
!==
No idéntico a
>
Mayor que
>=
Mayor o igual que
<
Menor que
<=
Menor o igual que
<=>
Nave espacial
??
Fusión de null
// devuelve 'true' si $a es igual a $b después de la manipulación de tipos.$a==$b
// devuelve 'true' si $a es igual a $b, y son del mismo tipo.$a===$b
// devuelve 'true' si $a no es igual a $b después de la manipulación de tipos.$a!=$b
// devuelve 'true' si $a no es igual a $b después de la manipulación de tipos.$a<>$b
// devuelve 'true' si $a no es igual a $b, o si no son del mismo tipo.$a!==$b
// devuelve 'true' si $a es estrictamente menor que $b.$a<$b
// devuelve 'true' si $a es estrictamente mayor que $b.$a>$b
// devuelve 'true' si $a es menor o igual que $b.$a<=$b
// devuelve 'true' $a es mayor o igual que $b.$a>=$b
// Un integer menor que, igual a, o mayor que cero cuando $a es respectivamente menor que, igual a, o mayor que $b.$a<=>$b
// El primer operando de izquierda a derecha que exista y no sea null. null si no hay valores definidos y no son null.$a??$b??$c
Excelente aporte
Superinteresante, no tenía conocimiento del operador espacial
No sabia de la existencia del operador nave espacial, muchas gracias Carlos!
Existe a partir de PHP 7, también hay uno nuevo llamado Operador de fusión de null, ver documentación
Jamás en mi vida había escuchado del operador de la nave espacial. :D
Se supone que soy un "experto en PHP" pero no me había puesto a detallar el funcionamiento de los nuevos operadores de PHP.
Es lindo, porque siempre se aprende algo nuevo.
Gracias, profe Carlos.
¿Cuándo una persona se puede considerar experta en un lenguaje?
Increíble las curiosidades que encuentras en la documentación.
Buenos tips, gracias
Por primera vez en todos los años que tengo en Platzi me he quedado enganchada con un curso. No quiero decir que los otros cursos no sean excelentes pero este profesor es lo mejor de lo mejor. Se entiende todo a la perfección.
Ame está clase xD.... no conocía esos dos últimos operadores y cuando explicaste de que se trataba mi mente hizo boom... me hubiese evitado mucho esfuerzo de haberlo sabido antes, este curso a pesar de ser básico tiene demasiado que aportar (◍•ᴗ•◍)❤
Comparto tu opinión
Operador Nave Espacial
Podemos tomar como referencia una recta numerica con 0 como el origen central de negativos y positivos Si (a y b son iguales)→ Equivale a un valor neutro en caso 0
Si (a es menor que b) → Pasa a la izquierda de lo negativos osea -1
Si (b que ocupa la segunda posicion es mayor que a) → Pasa a ala derecha de los positivos en este caso 1
Duda:
Entonces la función de null es como asignarle un valor a una variable en tiempo de ejecución?
No se le asigna valor a las variables. La fusión de null devuelve el valor de la primera variable que esté definida y su valor no sea null.
Excelente que se haya incluido y explicado las comparaciones de tipos y el operador nave espacial. Con la explicación tan buena que da el instructor no quedan nada de dudas.
NO se si lo vayan a mencionar posteriormente, pero es bueno también mostrar el operador ternario, el cual considero extremadamente útil y muy buen sustituto del if en algunos casos específicos
La fusión de null ??, podemos compararla con el operador ternario:
($a > $b)? 'Si es mayor' : 'No es mayor';
Como puedes comentar, sobreando la zona ?
¿Cómo es que selecciona todo y lo comenta?
Yo tengo que ir poniéndolo paso a paso y veo que el selecciona mucho y pum!, ¿Alguien sabe como se hace eso?
Hola 👋🏻
Lo que yo hago es seleccionar las líneas que quiero comentar y luego presionar ctrl + }
Con shift + alt + a
<?php
// Si el numero de la izquierda es mayor que el numero de la derecha, el resutado sera 1// Si los dos numeros son iguales te dara un 0// Si es numero de la izquierda es menor que el numero de la deracha, elresultado sera -1echo 2<=>1;echo "\n";echo 4<=>1;echo "\n";echo 2<=>100;echo "\n";// Si la edad de juanito no esta definida, dame la de pepito$Edad_de_pepito =23;echo $Edad_de_juanito ?? $Edad_de_pepito;
//igualdad ==
echo "igualdad ==";
echo "<br>";
var_dump ($a==$b);
echo "<br>";
var_dump ($a==$b2);
echo "<br>";
echo "<br>";
echo "<br>";
//identicos ===
echo "identicos ===";
echo "<br>";
var_dump ($a===$b);
echo "<br>";
var_dump ($a===$b2);
echo "<br>";
echo "<br>";
echo "<br>";
//diferente !=
echo "diferente !=";
echo "<br>";
var_dump ($a != $b);
echo "<br>";
var_dump ($a != $b2);
echo "<br>";
echo "<br>";
echo "<br>";
// !== comparativo
echo "!== comparativo";
echo "<br>";
var_dump ($a !== $b);
echo "<br>";
var_dump ($a !== $b2);
echo "<br>";
echo "<br>";
echo "<br>";
// < Menor que
echo "< Menor que";
echo "<br>";
var_dump( $a < $b );
echo "<br>";
var_dump( $c < $b );
echo "<br>";
var_dump( $d < $b );
echo "<br>";
echo "<br>";
// > Mayor que
echo "> Mayor que";
echo "<br>";
var_dump( $a > $b );
echo "<br>";
var_dump( $c > $b );
echo "<br>";
var_dump( $d > $b );
echo "<br>";
echo "<br>";
// >= Mayor o igual que
echo ">= Mayor o igual que";
echo "<br>";
var_dump( $a >= $b );
echo "<br>";
var_dump( $c >= $b );
echo "<br>";
var_dump( $d >= $b );
echo "<br>";
echo "<br>";
// <= Menor o igual que
echo "<= Menor o igual que";
echo "<br>";
var_dump( $a <= $b );
echo "<br>";
var_dump( $c <= $b );
echo "<br>";
var_dump( $d <= $b );
echo "<br>";
echo "<br>";
// <=> Nave espacial
echo "<=> Nave espacial";
echo "<br>";
echo 2 <=> 1; // 1
echo "<br>";
echo 1 <=> 1; // 0
echo "<br>";
echo -50 <=> 1; // -1
$a= 5;
$b= 5;
$c= 9;
$a = 5;$b = 5;$b2 = "5";$c = 9;$d = 2;
// == Igual
var_dump( "a y b son iguales: " . $a == $b ); Alguien me explica como podría realizar esto?
Esperaria que me mostrara el mensaje y el valor boleano.
Gracias de antemano.
var_dump ("a y b son iguales " . ($a == $b));
te producira:
string(19) "a y b son iguales 1"
el valor en string de true es 1, el de false es "".
En la expresion que colocaste, sin parentesis, el operador . tiene mas precedencia que el operador ==. Por lo anterior el var_dump colocaba: bool(false).
estaba comparando un string con un numero:
"a y b son iguales: 5" == 5
los parentesis hace que se ejecute primero el == y luego la concatenacion .