> Manuales > Manual de PHP

Lista descriptiva de los operadores más frecuentemente utilizados

Para avanzar nuestro conocimiento en el lenguaje PHP tenemos que detenernos a explicar los operadores, que son los símbolos que nos permiten expresar todo tipo de operaciones entre datos.

Cuando se estudia un lenguaje de programación, aprender los operadores es algo que generalmente realizas sobre la marcha, es decir, a medida que vas haciendo ejemplos vas aplicando operadores y su memorización es algo que surge de manera natural, sin tener que realizar muchos esfuerzos.

Es por tanto, que en el Manual de PHP nos vamos a detener a comentar cuáles son los operadores en PHP, pero las prácticas vendrán poco a poco a lo largo de sucesivos artículos. No pretendas memorizarlos todos, simplemente tenlos en cuenta y vuelve aquí más adelante para refrescar el conocimiento.

También advertimos que los operadores en PHP son más ricos de lo que se va a ver en este artículo, es decir, existen más operadores que no vamos a incluir en este artículo. Sin embargo, hay que aclarar que en el 99.9% de las ocasiones que usas operadores serán siempre los que vamos a conocer a continuación.

Qué son operadores

Un operador nos permite realizar una operación entre uno o más valores. El operador toma esos valores de entrada y los relaciona entre si, realizando una operación y aplicando otro valor como resultado. Para entendernos, operadores son los símbolos que usamos en las matemáticas para expresar cuentas con números, como los símbolos que nos indican ciertas operaciones: suma, resta, multiplicación, división...

En un lenguaje de programación los valores que vamos a relacionar mediante operadores pueden estar contenidos en variables, o escritos en el propio código. Los operadores toman esos valores y los modifican generando nuevos valores. A veces son conocidas operaciones matemáticas, pero a veces son operaciones lógicas o de asignación, por poner varios ejemplos.

Operadores en PHP por tipos de operaciones

En los capítulos anteriores ya hemos utilizado en nuestros ejemplos algunos operadores. Ahora les vamos a poner nombres, agrupados atendiendo al tipo de operación que realizan.

Operadores aritméticos

Nos permiten realizar operaciones numéricas con nuestras variables. Son los más fáciles de asimilar, porque generalmente todos conocemos esas operaciones.

Nota: El operador aritmético que puede resultar más desconocido para los lectores es el operador %. Explicamos con mayor detenimiento su funcionamiento y un ejemplo en el que es útil en el taller: Listas de elementos con colores alternos en PHP.

Operadores de asignación

Los operadores de asignación son los más habituales y nos permiten traspasar valores en variables. Asignar es el proceso por el cual colocamos un valor en una variable.

En el pasado ya habíamos creado variables y asignado valores, por lo que lo debes de reconocer. Lo usamos así:

$valor = 'Esto es lo que se va a asignar a la variable';

Además, en la asignación podría darse el caso que el valor a asignar fuese el resultado de realizar una operación.

$a = 23;
$b = 3;
$c = $a - $b;

Nota: Después de la ejecución de ese código ¿Cuál será el valor de la variable $c?. Seguro que deduces el valor 20. Si es así estás en lo cierto. El resultado de la operación de $a (que vale 23) menos $b (que vale 3) es igual a 20, que se asigna todo seguido a la variable $c. Lo que has visto como valor a asignar a $c ($a - $b) es lo que se conoce como una expresión. Antes de asignar se realiza el cómputo de la expresión y luego se asigna el valor.

Como has podido ver, asignar es una operación bien simple, lo que está a la derecha del operador se asigna a la variable que está a la izquierda. No tiene más. Sin embargo, PHP incluye una serie de operadores de asignación con una operación asociada, que nos permiten realizar esa operación y una asignación en un único paso.

$x = 5;
$x += 5; //$x valdrá 10

$cadena = "Hola ";
$cadena .= "mundo"; //$cadena ahora vale "hola mundo"
Nota: Mira más abajo "operaciones sobre cadenas" para entender la concatenación.

Operadores de comparación

Se utilizan principalmente en nuestras condiciones para comparar dos variables y verificar si cumple o no la propiedad del operador.

En este conjunto de operadores de comparación encontramos varios operadores nuevos, incorporados en PHP 7. Los estudiaremos aparte. Pero los que más se utilizan son los otros, que realmente son bastante sencillos de aprender, aunque para ver ejemplos interesantes tenemos que entender las estructuras de control.

Vamos a adelantarnos un poco, presentando aquí un código en el que usamos la estructura de control condicional de PHP, que nos servirá para comparar valores dados en una expresión y hacer cosas cuando cumpla o no cierta condición.

$a = 20;
$b = 30;

if($a < $b) {
    echo '$a es menor que $b';
}

Ejecutando ese código obtendremos la salida "$a es menor que $b", porque la operación de comparación se realizó y su resultado fue afirmativo.

Es interesante, aunque incidiremos más adelante, la existencia de los operadores === y !== que no solo comprueban si algo es igual a otra cosa, sino que además tienen en cuenta los tipos de las variables. Mira primero este código:

$a = 20;
$b = "20";

if($a == $b) {
    echo '$a es igual que $b'; // (sin tener en cuenta los tipos)
}

Como resultado de ejecución PHP nos dirá "$a es igual que $b". Esto es porque la operación de comparación realizada con el operador == no tiene en cuenta los tipos de las variables. Para PHP 20 y "20" es lo mismo. Sin embargo, ahora mira el siguiente código:

$a = 20;
$b = "20";

if($a === $b) {
    echo '$a es igual que $b, y del mismo tipo';
} else {
    echo '$a es distinto que $b, o de distinto tipo';
}

Al ejecutar ese código obtendremos la salida "$a es distinto que $b, o de distinto tipo". Porque al usar el operador === sí le estamos pidiendo a PHP que tenga en cuenta los tipos para decirnos si algo es igual a otra cosa.

Nota: Puedes saber más sobre la estructura "if" en el artículo sobre la estructura condicional de PHP.

Operadores lógicos

Los operadores lógicos sirven para realizar operaciones lógicas, valga la redundancia. Son operaciones que al final van a devolver un "sí" o un "no", positivo o negativo. Se usan en combinación con los operadores de comparación cuando la expresión de la condición lo requiere.

Los operadores lógicos también se usan generalmente en expresiones que vas a usar para evaluar en estructuras de control. Su operación tiene sentido generalmente cuando trabajamos con valores boleanos (sí o no) o expresiones que una vez evaluadas producen valores boleanos.

$a = true;
$b = false;

if($a && $b) {
    echo '$a y $b son los dos verdaderos';
} else {
    echo 'o uno de $a o $b son falsos, o los dos son falsos';
}

Ese código nos dirá que "o uno de $a o $b son falsos, o los dos son falsos".

Nota: Puede parecer curioso que en PHP haya dos operadores que sirven para la operación lógica "y" y dos para la expresión lógica "o". De hecho es bastante extraño. El motivo es que cada operador tiene una precendencia de operadores distinta.

Operadores de incremento

Sirven para aumentar o disminuir en una unidad el valor de una variable. Son atajos para hacer una operación típica en los recorridos de bucles, de aumentar o disminuir un valor que usamos para llevar la cuenta de las iteraciones realizadas.

Estos operadores son interesantes, porque realizan dos cosas, igual que los operadores de asignación combinada que vimos antes. Por un lado un decremento o incremento y por otro lado se devuelven ellos mismos como resultado del operador. Lo curioso es que existen los "pre" y los "post" y es que funcionan de manera un poco distinta.

Cuando tenemos un pre-incremento o pre-decremento, primero se realiza el incremento/decremento y luego se devuelve ese valor. Con el post-incremento o post-decremento, primero se devuelve el valor original y luego se realiza el incremento/decremento. Para acabar de entenderlo es mejor examinar este código:

$a = 3;
$b = ++$a;
echo "\$a vale $a y \$b vale $b"; //$a vale 4 y $b vale 4

$a = 3;
$b = $a++;
echo "\$a vale $a y \$b vale $b"; //$a vale 4 y $b vale 3

En este código como salida obtenemos cosas distintas por el pre-incremento y el post-incremento. La salida aparece al lado, en el comentario. Analízalo y podrás entender cómo es posible.

Operadores de cadenas

Cuando trabajamos con cadenas de caracteres tenemos un operador especial que es el de la concatenación. Sirve para unir una cadena a la otra.

$saludo = "Hola ";
$nombre = "DesarrolloWeb.com";

$saludoCompleto = $saludo . $nombre; // vale "Hola DesarrolloWeb.com"

Precedencia de operadores

Cuando se aprende un leguaje de programación debemos prestar atención especial a la predecencia de operadores, que es básicamente un conjunto de reglas y orden por el que se irán evaluando los operadores cuando trabajamos con expresiones que incluyen varios de ellos.

Igual que en las matemáticas, en ocasiones, si hacemos las operaciones en un orden u otro, los valores finales pueden también tener cambios. En lenguajes de programación, dependiendo del orden en el que se apliquen esos operadores, las expresiones pueden dar pie a resultados distintos.

Por ejemplo, toma la expresión: 2 * 3 + 10

¿cuál de esas dos opciones será la que PHP da por válida? La precedencia de operadores sirve para aclarar esa duda y que los programadores sepan a priori cómo el lenguaje va a resolver las expresiones, siendo capaces de escribirlas de modo que la solución sea la que ellos esperaban.

Sin embargo, no siempre la predecencia del lenguaje es la que nosotros deseamos que se aplique. Para facilitar las cosas existen los paréntesis, que nos permiten definir nuestras expresiones marcando qué operadores deben resolverse antes. Dicho de otro modo, siempre que usemos paréntesis estaremos obligando al compilador a resolver antes determinadas operaciones, a pesar de la precedencia que él tenga definida de manera predeterminada.

La expresión de antes, escrita de este modo: (2 * 3) + 10 no tendría lugar a distintas interpretaciones. Obviamente, debemos conocer la precedencia de operadores para no dar lugar a casos donde el intérprete de PHP pueda obtener resultados no esperados. O si no, estaremos obligados a usar siempre paréntesis, produciendo expresiones de complejidad superior a la necesaria.

Nota: También puede darse el caso que, aunque sepamos bien la predecencia, colocar unos paréntesis puede ayudar a la legibilidad del código, dado que cualquier lector humano, al ver los paréntesis sabrá inmediatamente que ese pedazo de expresión se evaluará antes.

Te recomendamos leer la documentación de PHP para aprender más sobre la precedencia y consultar la tabla completa, que es un poco larga como para reflejarla aquí.

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual