No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Operadores relacionales

18/24
Recursos

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.

Contribuci贸n creada por: Mart铆n 脕lvarez

Aportes 36

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Les dejo mi resumen de esta clase:

Operadores Relacionales

Igual, ==

No compara tipos, solo valores

Se denota con   ==

$a == $b

Id茅ntico, ===

Compara tipos y valores

Se denota con ===

Diferentes, ! =, ! ==

! = , no compara tipos,

! ==, compara tipos y valores,

Menor que, <

$a < $b

Mayor que, >

$a > $b

Mayor o Igual que, > =

$a 鈮 $b

Menor o Igual que, < =

$a < = $b

Operador de Nave Espacial, < = >

<?php
	echo 2 <=> 1;
	echo "\n";

echo 2 <=> 1; // 1
echo 1 <=> 1; // 0
echo -50 <=> 1 //
  • 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 pepito

echo "\n";

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: 鈥淪i 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 馃槈

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

No sabia de la existencia del operador nave espacial, muchas gracias Carlos!

Jam谩s en mi vida hab铆a escuchado del operador de la nave espacial. 馃槃

Incre铆ble las curiosidades que encuentras en la documentaci贸n.

Se supone que soy un 鈥渆xperto 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.

El operador nave espacial

El operador nave espacial se emplea para comparar dos expresiones. Devuelve -1, 0 o 1 cuando $a es respectivamente menor, igual, o mayor que $b.

<?php
// N煤meros enteros
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// N煤meros decimales
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// Cadenas de caracteres
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>

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.

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

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 (鈼嶁⑨礂鈥⑩棈)鉂

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

Referencia de la Documentacion Oficial
https://www.php.net/manual/es/migration70.new-features.php

La fusi贸n de null ??, podemos compararla con el operador ternario:
($a > $b)? 鈥楽i es mayor鈥 : 鈥楴o es mayor鈥;

<?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 -1

echo 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;

Dale like si tambi茅n te equivocas en el tipeo cuando estudias. ; - ).

Este ejemplo me ayudo a comprender la Nave espacial
****

Para que veas tus variables en consola y compares las condiciones de inmediato

crea esta variable e imprime arriba de tus var_dump

$valores = '$a = '. $a. ' $b = '. $b. ' $b2 = '. $b2. ' $c = '. $c. ' $d = '. $d. "\n"; 
echo $valores;

esta bueno para un:

if($edad_juanito ?? $edad_pepito){ 

}

Todo mundo ganando puntos con el 鈥済racias鈥 jejejej

senti un dejavu al ver esta clase鈥
precisamente al momento de ver el operador <=>
me parecio haberlo visto anteriormente en otro lenguaje de programacion xD

El operador de nave espacial promete muchas funciones pr谩cticas. 驴Cu谩l se les ocurre?

Pero que profesor mas genial para aprender, sin tantas cosas he aprendido de una manera m谩s pr谩ctica los operadores relacionales, de hecho los 煤ltimos dos operadores relacionales no los conoc铆a, saludos!

la Fusion de null lo que en JS se conoce como un operador ternario , cierto?

El 煤nico confuso fue el operador null

No hab铆a escuchado hablar sobre el operador de nave espacial y tampoco Fusi贸n de null.
Exelente clases !!!

Operador Nave espacial
Lo entend铆 as铆:
-1 0 1

<?php

echo "-10 <=> 5 Resultado " . (-10 <=> 5); // -1
echo "\n";
echo "2 <=> 2 Resultado " . (2 <=> 2); // 0
echo "\n";
echo "4 <=> 2 Resultado " . (4 <=> 2);   // 1
echo "\n";

Se lee de acuerdo a que la relaci贸n de los dos n煤meros sea verdadera.
(-1 0 1)
(-10 <=> 5) lo leo (-10 < 5) da como resultado -1
(2 <=> 2) lo leo (2 = 2) da como resultado 0
(4 <=> 2) lo leo (4 > 2) da como resultado 1

Me adentre a aprender PHP por que que he estado trabajando con ProcessMaker cuyo backend esta hecho en php, por el momento muy bien el curso.

Comparto mi apunte que he realizado de esta clase.
Adicionalmente encontr茅 en la documentaci贸n que para el caso de Diferente podemos usar tambi茅n el operador

<>

.

<?php
// Operadores relacionales en PHP
/*
  Al igual que en otros lenguajes, en PHP tenemos varios operadores relacionales
  los cuales comparan 2 o mas operandos y nos retornaran un valor 'true' o 'false' 
  y en ciertos casos alg煤n otro valor.
*/

// Declaraci贸n de variables
$n1 = 7;
$n2 = 4;
$n2String = "4";
$n3 = 7;
$soyNull = null;

// Operador de Igualdad: == (Compara si son iguales ambos operandos)
echo("Operador de Igualdad\n");
var_dump( $n1 == $n2 ); // false
var_dump( $n2 == $n2String ); // true
var_dump( $n1 === $n3 ); // true

// Operador de Id茅ntico: === (Compara si son iguales ambos operandos junto a su tipo de dato)
echo("Operador de Id茅ntico\n");
var_dump( $n1 === $n2 ); // false
var_dump( $n2 === $n2String ); // false
var_dump( $n1 === $n3 ); // true

// Operador de Diferente: != || <> (Compara que los operandos sean diferentes)
echo("Operador de Diferente\n");
var_dump( $n1 != $n2 ); // true
var_dump( $n1 <> $n2 ); // true
var_dump( $n2 != $n2String ); // false
var_dump( $n1 != $n3 ); // false
var_dump( $n1 <> $n3 ); // false

// Operador de Diferente: !== (Compara que los valores sean diferentes junto a su tipo de dato)
echo("Operador de Diferente\n");
var_dump( $n1 !== $n2 ); // true
var_dump( $n2 !== $n2String ); // true
var_dump( $n1 !== $n3 ); // false

// Operador de menor que: < (Compara que el primer operando sea menor al segundo operando)
echo("Operador de menor que\n");
var_dump( $n1 < $n2 ); // false
var_dump( $n2 < $n1 ); // true
var_dump( $n2 < $n2String ); // false

// Operador de menor o igual que: <= (Compara que el primer operando sea menor o igual al segundo operando)
echo("Operador de menor o igual que\n");
var_dump( $n1 <= $n2 ); // false
var_dump( $n2 <= $n1 ); // true
var_dump( $n2 <= $n2String ); // true

// Operador de mayor que: > (Compara que el primer operando sea mayor al segundo operando)
echo("Operador de mayor que\n");
var_dump( $n1 > $n2 ); // true
var_dump( $n2 > $n1 ); // false
var_dump( $n2 > $n2String ); // false

// Operador de mayor o igual que: >= (Compara que el primer operando sea mayor o igual al segundo operando)
echo("Operador de mayor o igual que\n");
var_dump( $n1 >= $n2 ); // true
var_dump( $n2 >= $n1 ); // false
var_dump( $n2 >= $n2String ); // true

// Operador de nave espacial: <=> (Compara los 2 operandos y retorna -1 si el primer operando (izquierda) es menor al segundo operando (derecha), retorna 0 si ambos operandos son iguales y retorna 1 si el primer operando (izquierda) es mayor al segundo operando (derecha))
echo("Operador de nave espacial\n");
var_dump( $n2 <=> $n1 ); // -1
var_dump( $n1 <=> $n2 ); // 1
var_dump( $n2 <=> $n2String ); // 0

// Operador de fusi贸n de null: ?? (Devuelve el primer operando (valor) si existe y no es null, de lo contrario devuelve el segundo operando)
echo("Operador de fusi贸n de null\n");
var_dump( $soyNull); // null
var_dump( $soyNull ?? 2); // 2
var_dump( $soyNull ?? $n1 ); // 7
var_dump( $variableNoExistente ?? $otraVariableNoExistente ?? $n2 ?? $n1 ); // 4

echo(PHP_EOL);

Saludos
Nave espacial?
Fusion de null?
Genial, son nuevos para mi, que maravilloso es PHP
Gracias.

Este seria mi ejemplo de estos operadores mas los conoszco como operadores de comparacion.

<?php
$price = 200;

echo "price = $price \n";
echo "\n";

// Equal to
$value = $price == $price;
echo "price == price = $value \n";
var_dump($value);

// Equal to
$value = $price == "200";
echo "price(number) == '200'(string) = $value \n";
var_dump($value);

// Equal to/Equal type
$value = $price === 200;
echo "price(number) === 200(number) = $value \n";
var_dump($value);

// Equal to/Equal type
$value = $price === "200";
echo "price(number) === '200'(string) = $value \n";
var_dump($value);
echo "\n";

// Not Equal to
$value = $price != 100;
echo "price(number) != 100 = $value \n";
var_dump($value);

// Not Equal to/Not equal type
$value = $price !== "200";
echo "price(number) !== '200' = $value \n";
var_dump($value);
echo "\n";

// Greater than
$value = $price > 10;
echo "price > 10 = $value \n";
var_dump($value);

// Greater than or equal to
$value = $price >= $price;
echo "price >= price = $value \n";
var_dump($value);

// Less than
$value = $price < 1500;
echo "price < 1500 = $value \n";
var_dump($value);

// Less than or equal to
$value = $price <= $price;
echo "price <= price = $value \n";
var_dump($value);

// Operador nave espacial
echo "Si el numero que esta a la izquiera es mayor al numero que esta a la derecha es 1 \n";
echo "price <=> 100 = " . ($price <=> 100) . "\n";

echo "Si el numero que esta a la izquiera es igual al numero que esta a la derecha es 0 \n";
echo "price <=> price = " . ($price <=> $price) . "\n";

echo "Si el numero que esta a la izquiera es menor al numero que esta a la derecha es -1 \n";
echo "100 <=> price = " . (100 <=> $price) . "\n";
el de nave espacial combina bien con el select case, yo lo ocupe para comparar el tama帽o de los arreglos 馃榿

el operador de fusi贸n no solo valida que la variable no est茅 definida, si no que si la variable no tiene un valor asignado (por ejemplo null) tampoco la toma en cuenta.

$edad_de_pepito = 23;
$edad_de_juanito = null;

echo $edad_de_juanito ?? $edad_de_pepito ?? edad_de_jaimito; // resultado 23

Es similar a lo que se usa en Javascript con el operador (?) para validar el contenido de una variable.

Operadores relacionales

No conoc铆a el operador nave espacial. Muy bien explicado todo

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

Operador de nave espacial: