Null Coalescing vs Elvis Operator en PHP

Subodh Poudel 21 junio 2022
  1. Operador Elvis en PHP
  2. Operador coalescente nulo en PHP
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 Poudel avatar Subodh Poudel avatar

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

Artículo relacionado - PHP Operator