Null Coalescing vs Elvis Operator en PHP
Este artículo diferenciará el operador coalescente nulo y el operador Elvis en PHP con demostraciones.
Operador Elvis en PHP
Primero, sepamos sobre el operador de Elvis. El operador PHP Elvis es un operador abreviado para el operador ternario.
También podemos decir que es una forma modificada del operador ternario. Para comprender el operador PHP Elvis, debemos conocer el operador ternario y cómo funciona.
Un operador ternario es un operador condicional que se utiliza para realizar una comparación simple o verificar una condición que tiene declaraciones simples. Es una versión más corta de la sentencia if-else
.
Disminuye la longitud del código que realiza operaciones condicionales. El orden de la operación es de izquierda a derecha.
Sintaxis:
condition? statement1 : statement2;
En el operador ternario, en primer lugar, se evalúa la condition
. Si la condición es verdadera, se ejecuta statement1
, y si la condición es falsa, se ejecuta statement2
.
Se llama operador ternario ya que toma tres operandos, es decir, una condición, una declaración de resultado para verdadero y una declaración para falso.
Código de ejemplo:
<?php
$marks = 80;
$result = $marks >= 40 ? 'Pass': 'Fail';
echo $result;
?>
El ejemplo anterior mostrará Pass
ya que la condición $marks >= 40
es verdadera.
Producción :
Pass
Ahora echemos un vistazo al operador de Elvis. Es ligeramente diferente del operador ternario; simplemente omite el segundo operando (entre condition
y statement2
) y lo hace aún más corto.
Sintaxis:
condition?:statement;
Aquí, si la condition
se evalúa como verdadera, devuelve condition
. De lo contrario, devolverá statement
.
La representación ternaria de la sintaxis de Elvis anterior se muestra a continuación.
conditon ? condition : statement;
Nota: Valores como 0
, false
, NULL
, ""
, []
, "0"
, etc., se consideran valores falsos en PHP.
Veamos algunos ejemplos de operadores de Elvis.
Código de ejemplo:
<?php
$name = "John Doe";
$yourName = $name ?: 'No name';
echo $yourName."<br>";
$marks = "";
$yourMarks = $marks ?: 'No marks';
echo $yourMarks."<br>";
$address = null;
$yourAddress = $address ?: 'No Address';
echo $yourAddress."<br>";
$age = false;
$yourAge = $age ?: 'No age';
echo $yourAge."<br>";
?>
Producción :
John Doe
No marks
No Address
No age
Dado que la variable $name
devuelve true
, se evalúa el valor de la variable. En el resto de los casos, las variables $marks
, $address
y $age
devuelven false
, por lo que se evalúan los operandos de la derecha.
Por tanto, podemos concluir que la salida del operador Elvis depende del estado true
o false
de la condición.
Operador coalescente nulo en PHP
El operador coalescente nulo verifica si la variable dada es nula o no, y devuelve el valor no nulo del par de valores. La salida del operador coalescente nulo depende de si la variable es nula.
Veamos la sintaxis a continuación para entenderlo.
statment1 ?? statement2;
Aquí, si statement1
se evalúa como nulo, se devolverá statement2
. Si statment1
es un valor no nulo, se devolverá.
En el operador coalescente nulo, no importa si el valor de statement
es false
, 0
o ''
. Incluso si statement
tiene valores falsos, se devolverá su valor.
Esta es la principal diferencia entre el operador Elvis y el operador coalescente nulo. Algunos ejemplos de operadores coalescentes nulos son:
Código de ejemplo:
<?php
$name = "John Doe";
$yourName = $name ?? 'No name';
echo $yourName."<br>";
$marks = "";
$yourMarks = $marks ?? 'No marks';
echo $yourMarks."<br>";
$age = false;
$yourAge = $age ?? 'No age';
echo $yourAge."<br>";
$address = null;
$yourAddress = $address ?? 'No Address';
echo $yourAddress."<br>";
?>
Producción :
John Doe
No Address
Aquí, la variable $name
es verdadera, luego se evalúa e imprime en la sección de salida. A continuación, la variable $marks
es una cadena vacía; una cadena vacía es un valor falso.
El segundo operando no se evalúa ya que no es un valor nulo. Hay un espacio en blanco en la sección de salida porque se evalúa la cadena vacía.
El caso es el mismo para la variable $age
ya que contiene un valor falso pero no un valor nulo. Por último, la variable $address
tiene un valor nulo, por lo que se evalúa el segundo operando, No Address
.
A partir de los ejemplos y la explicación anteriores, podemos concluir que la diferencia significativa entre el operador Elvis y el operador coalescente nulo es que el operador Elvis verifica si el valor es verdadero. Aún así, el operador coalescente nulo verifica si el valor no es nulo.
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn