Operadores

Cap铆tulo 15. Operadores

Tabla de contenidos
Precedencia de Operadores
Operadores de Aritm茅tica
Operadores de Asignaci贸n
Operadores Bit a Bit
Operadores de Comparaci贸n
Operadores de Control de Errores
Operadores de ejecuci贸n
Operadores de Incremento/Decremento
Operadores de L贸gica
Operadores de Cadena
Operadores de Matrices
Operadores de Tipo

Un operador es algo a lo que usted entrega uno o m谩s valores (o expresiones, en jerga de programaci贸n) y produce otro valor (de modo que la construcci贸n misma se convierte en una expresi贸n). As铆 que puede pensar sobre las funciones o construcciones que devuelven un valor (como print) como operadores, y en aquellas que no devuelven nada (como echo) como cualquier otra cosa.

Existen tres tipos de operadores. En primer lugar se encuentra el operador unario, el cual opera sobre un 煤nico valor, por ejemplo ! (el operador de negaci贸n) o ++ (el operador de incremento). El segundo grupo se conoce como operadores binarios; 茅ste grupo contiene la mayor铆a de operadores que soporta PHP, y una lista se encuentra disponible m谩s adelante en la secci贸n Precedencia de Operadores.

El tercer grupo consiste del operador ternario: ?:. 脡ste debe ser usado para seleccionar entre dos expresiones, en base a una tercera, en lugar de seleccionar dos sentencias o rutas de ejecuci贸n. Rodear las expresiones ternarias con par茅ntesis es una muy buena idea.

Precedencia de Operadores

La precedencia de un operador indica qu茅 tan "cerca" se agrupan dos expresiones. Por ejemplo, en la expresi贸n 1 + 5 * 3, la respuesta es 16 y no 18, ya que el operador de multiplicaci贸n ("*") tiene una mayor precedencia que el operador de adici贸n ("+"). Los par茅ntesis pueden ser usados para marcar la precedencia, si resulta necesario. Por ejemplo: (1 + 5) * 3 eval煤a a 18. Si la precedencia de los operadores es la misma, se utiliza una asociaci贸n de izquierda a derecha.

La siguiente tabla lista la precedencia de los operadores, con aquellos de mayor precedencia listados al comienzo de la tabla. Los operadores en la misma l铆nea tienen la misma precedencia, en cuyo caso su asociatividad decide el orden para evaluarlos.

Tabla 15-1. Precedencia de Operadores

AsociatividadOperadoresInformaci贸n Adicional
no-asociativonewnew
izquierda[array()
no-asociativos++ -- incremento/decremento
no-asociativos! ~ - (int) (float) (string) (array) (object) @ tipos
izquierda* / % aritm茅tica
izquierda+ - . aritm茅tica, y cadena
izquierda<< >> manejo de bits
no-asociativos< <= > >= comparaci贸n
no-asociativos== != === !== comparaci贸n
izquierda& manejo de bits, y referencias
izquierda^ manejo de bits
izquierda| manejo de bits
izquierda&& l贸gicos
izquierda|| l贸gicos
izquierda? : ternario
derecha = += -= *= /= .= %= &= |= ^= <<= >>= asignaci贸n
izquierdaand l贸gicos
izquierdaxor l贸gicos
izquierdaor l贸gicos
izquierda,varios usos

La asociatividad de izquierda quiere decir que la expresi贸n es evaluada desde la izquierda a la derecha, la asociatividad de derecha quiere decir lo contrario.

Ejemplo 15-1. Asociatividad

<?php
$a
= 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>
Use par茅ntesis para incrementar la legibilidad del c贸digo.

Nota: Aunque ! tiene una mayor precedencia que =, PHP permitir谩 aun expresionas similares a la siguiente: if (!$a = foo()), en cuyo caso la salida de foo() va a dar a $a.