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.
+
Suma-
Resta*
Multiplicación/
División%
Módulo (resto de la división)**
Exponenciación (2 ** 3, elevar 2 la a tercera potencia)
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.
=
Asignación
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;
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.
+=
Suma y asignación-=
Resta y asignación*=
Multiplicación y asignación/=
División y asignación%=
Módulo y asignación.=
Concatenación y asignación
$x = 5;
$x += 5; //$x valdrá 10
$cadena = "Hola ";
$cadena .= "mundo"; //$cadena ahora vale "hola mundo"
Operadores de comparación
Se utilizan principalmente en nuestras condiciones para comparar dos variables y verificar si cumple o no la propiedad del operador.
==
Comprueba si son iguales!=
Comprueba si son distintos===
Comprueba si son iguales y de exactamente el mismo tipo!==
Comprueba si son distintos o de distinto tipo<>
Diferente (igual que !=)<
Menor qué, comprueba si un valor es menor que otro>
Mayór qué<=
Menor o igual>=
Mayor o igual<=>
Comparador de orden. (PHP 7)??
uno o el otro (PHP 7)
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.
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.
and
Operación lógica "y", será verdadero si ambos son verdaderos.or
Operación lógica "o", será verdadero si uno de ellos es verdaderoxor
Operación lógica "xor", será verdadero si uno de ellos es verdadero, pero no ambos.!
Operación de negación, si era verdadero pasa a falso y viceversa.&&
Operación lógica "y"||
Operación lógica "o"
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".
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.
++$a
Pre-incremento$a++
Post-incremento--$a
Pre-decremento$a--
Post-decremento
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.
.
Concatenación
$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
- Si se resuelve primero la suma sería 2 * 13 = 26.
- Si se resuelve primero la multiplicación sería 6 + 10 = 16.
¿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.
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
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...