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
derecha[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.

Hosting by: hurra.com
Generated: 2007-01-26 18:01:09