Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Operadores aritméticos
Operadores aritméticos
El operador de división ("/") devuelve un valor flotante a menos que los dos operandos sean integers (o
strings que se conviertan a integers) y los números sean divisibles, en cuyo caso será devuelto un valor
integer.
Los operandos del módulo se convierten en integers (por extracción de la parte decimal) antes del
procesamiento.
- Pág. 1 de 18 -
Psy3com - Cuentos de terror
El resultado del operador módulo % tiene el mismo signo que el dividendo — es decir, el resultado de $a
% $b tendrá el mismo signo que $a. Por ejemplo:
<?php
?>
Operadores de asignación
El operador básico de asignación es "=". Se podría inclinar a pensar primero que es como un "igual a". No
lo es. Realmente significa que el operando de la izquierda se establece con el valor de la expresión de la
derecha (es decir, "se define como").
El valor de una expresión de asignación es el valor asignado. Es decir, el valor de "$a = 3" es de 3. Esto
permite hacer algunas cosas intrincadas:
<?php
?>
Para arrays, asignar un valor a una clave con nombre se realiza utilizando el operador "=>". La
precedencia de este operador es la misma que otros operadores de asignación.
Además del operador básico de asignación, existen "operadores combinados" para todos los de aritmética
binaria, unión de arrays y operadores de strings que permiten usar un valor en una expresión y entonces
establecer su valor como el resultado de esa expresión. Por ejemplo:
<?php
$a = 3;
- Pág. 2 de 18 -
Psy3com - Cuentos de terror
$b = "Hola ";
?>
Tener en cuenta que la asignación copia la variable original en la nueva (asignación por valor), por lo que
los cambios en una no afectarán a la otra. Esto también puede tener relevancia si se necesita copiar algo
como un gran array dentro de un bucle estrecho.
Una excepción al comportamiento usual de la asignación por valor en PHP ocurre con objects los cuales
son asignados por referencia en PHP 5. Los objetos pueden ser explícitamente copiados por medio de la
palabra clave clone.
La asignación por referencia también está soportada, utilizando la sintaxis "$var = &$othervar;".
Asignación por referencia significa que ambas variables terminan apuntando a los mismos datos y nada es
copiado en ninguna parte.
<?php
$a = 3;
$a = 4; // cambia $a
print "$b\n"; // muestra 4 también, dado que $b es una referencia para $a, la cual ha
// sido cambiada
?>
- Pág. 3 de 18 -
Psy3com - Cuentos de terror
Desde PHP 5, el operador new retorna una referencia automáticamente, así que asignar el resultado de
new por referencia, resulta en un mensaje E_DEPRECATED en PHP 5.3 y posteriores y un mensaje
E_STRICT en versiones anteriores.
<?php
class C {}
*/
$o = &new C;
?>
Operadores de comparación
Los operadores de comparación, como su nombre lo indica, permiten comparar dos valores. Puede
también estar interesado en ver las tablas de comparación de tipos, ya que muestran ejemplos de las varias
comparaciones relacionadas con tipos.
Operadores de comparación
- Pág. 4 de 18 -
Psy3com - Cuentos de terror
Operadores de comparación
Menor o
$a <= $b TRUE si $a es menor o igual que $b.
igual que
Mayor o
$a >= $b TRUE si $a es mayor o igual que $b.
igual que
Si se compara un número con un string o la comparación implica strings numéricos, entonces cada string
es convertido en un número y la comparación realizada numéricamente. Estas reglas también se aplican a
la sentencia switch. La conversión de tipo no tiene lugar cuando la comparación es === o !== ya que esto
involucra comparar el tipo así como el valor.
<?php
- Pág. 5 de 18 -
Psy3com - Cuentos de terror
switch ("a") {
case 0:
echo "0";
break;
echo "a";
break;
?>
Para varios tipos, la comparación se realiza de acuerdo a la siguiente tabla (en orden).
Tipo de Tipo de
Resultado
operando 1 operando 2
null o
string Convierte NULL en "", comparación numérica o léxica
string
object object son incomparables, la misma clase - comparan propiedades en la misma forma
- Pág. 6 de 18 -
Psy3com - Cuentos de terror
Tipo de Tipo de
Resultado
operando 1 operando 2
resource o resource o
number number
array array encuentra en el operando 2 entonces los arrays son incomparables, de otra
<?php
// Arrays son comparados de esta forma con los operadores de comparación estándar
if (!array_key_exists($key, $op2)) {
- Pág. 7 de 18 -
Psy3com - Cuentos de terror
return -1;
return 1;
?>
Ver también strcasecmp(), strcmp(), operadores de array, y la sección del manual sobre tipos.
Advertencia
Debido a la forma en que son representados internamente los floats, no se deben probar por igualdad dos
floats.
Operador ternario
<?php
if (empty($_POST['action'])) {
- Pág. 8 de 18 -
Psy3com - Cuentos de terror
$action = 'default';
} else {
$action = $_POST['action'];
?>
La expresión (expr1) ? (expr2) : (expr3) evalúa a expr2 si expr1 se evalúa como TRUE y a expr3 si expr1 se
A partir de PHP 5.3, es posible dejar de lado la parte media del operador ternario. La expresión expr1 ?:
expr3 retorna expr1 si expr1 se evalúa como TRUE y expr3 si es de otra manera.
Nota: Por favor note que el operador ternario es una sentencia, y que no evalúa a una variable, pero si al
resultado de una sentencia. Esto es importante saberlo si se desea retornar una variable por referencia. La
sentencia return $var == 42 ? $a : $b; en una función con retorno-por-referencia no funcionará por lo
que se ha mencionado y una advertencia es generada en versiones posteriores de PHP.
PHP soporta un operador de control de errores: el signo de arroba (@). Cuando se antepone a una
expresión en PHP, cualquier mensaje de error que pueden ser generado por esa expresión será ignorado.
Si la propiedad track_errors está activada, cualquier mensaje de error generado por la expresión será
guardada en la variable $php_errormsg. Esta variable se sobrescribe en cada error, así que se debe
comprobar antes si se desea utilizar.
<?php
- Pág. 9 de 18 -
Psy3com - Cuentos de terror
$value = @$cache[$key];
?>
Nota: El operador @ trabaja sólo sobre expresiones. Una simple regla de oro es: si se puede tomar el
valor de algo, entonces se le puede anteponer el operador @. Por ejemplo, puede anteponerse a variables,
a llamadas a funciones e includes, constantes y así sucesivamente. No puede anteponerse a definiciones
de función o clase, ni a estructuras condicionales como if y foreach, y así sucesivamente.
Operadores de ejecución
PHP soporta un operador de ejecución: las comillas invertidas (``). ¡Note que estas no son las comillas
sencillas! PHP intentará ejecutar el contenido entre las comillas invertidas como si se tratara de un
comando del shell; la salida será retornada (es decir, no será simplemente volcada como salida; puede ser
asignada a una variable). El uso del operador de comillas invertidas es idéntico al de shell_exec().
<?php
echo "<pre>$output</pre>";
?>
Nota:
El operador de comillas invertidas se deshabilita cuando safe mode esta activado o shell_exec() esta
desactivado.
Operadores de incremento/decremento
Nota: Los operadores de incremento/decremento no afectan a los valores booleanos. Decrementar valores
NULL tampoco tiene efecto, pero incrementarlos entonces resulta en 1.
Operadores de incremento/decremento
- Pág. 10 de 18 -
Psy3com - Cuentos de terror
Eje
Nombre Efecto
mplo
a incremento $a.
+ incremento uno.
<?php
echo "<h3>Postincremento</h3>";
$a = 5;
echo "<h3>Preincremento</h3>";
$a = 5;
echo "<h3>Postdecremento</h3>";
- Pág. 11 de 18 -
Psy3com - Cuentos de terror
$a = 5;
echo "<h3>Predecremento</h3>";
$a = 5;
?>
PHP sigue la convención de Perl cuando trabaja con operaciones aritméticas sobre variables de caracteres
y no la de C. Por ejemplo, en PHP y Perl $a = 'Z'; $a++; convierte $a en 'AA', mientras que en C a = 'Z';
a++; convierte a en '[' (el valor ASCII de 'Z' es 90, el valor ASCII de '[' es 91). Nótese que las variables
de caracteres pueden ser incrementadas pero no decrementadas y aun así sólo caracteres de ASCII plano
(a-z y A-Z) están soportados. Incrementar o decrementar otras variables de caracteres no tiene efecto, el
string original no se modifica.
<?php
$i = 'W';
?>
X
Y
Z
AA
AB
AC
Operadores lógicos
- Pág. 12 de 18 -
Psy3com - Cuentos de terror
Operadores lógicos
Ejem
Nombre Resultado
plo
$a
And (y) TRUE si tanto $a como $b son TRUE.
and $b
$a or Or (o TRUE si cualquiera de $a o $b es
$b inclusivo) TRUE.
$a
And (y) TRUE si tanto $a como $b son TRUE.
&& $b
$a || Or (o TRUE si cualquiera de $a o $b es
$b inclusivo) TRUE.
La razón para tener las dos variaciones diferentes de los operadores "and" y "or" es que ellos operan con
precedencias diferentes. (Ver Precedencia de operadores.)
<?php
// --------------------
- Pág. 13 de 18 -
Psy3com - Cuentos de terror
$b = (true || foo());
$d = (true or foo());
// --------------------
$e = false || true;
$f = false or true;
var_dump($e, $f);
// --------------------
- Pág. 14 de 18 -
Psy3com - Cuentos de terror
var_dump($g, $h);
?>
bool(true)
bool(false)
bool(false)
bool(true)
Existen dos operadores para datos tipo string. El primero es el operador de concatenación ('.'), el cual
retorna el resultado de concatenar sus argumentos derecho e izquierdo. El segundo es el operador de
asignación sobre concatenación ('.='), el cual añade el argumento del lado derecho al argumento en el lado
izquierdo. Por favor consulte Operadores de asignación para más información.
<?php
$a = "Hello ";
$a = "Hello ";
Ejem
Nombre Resultado
plo
- Pág. 15 de 18 -
Psy3com - Cuentos de terror
Ejem
Nombre Resultado
plo
$a +
Unión Unión de $a y $b.
$b
$a ==
Igualdad TRUE si $a i $b tienen las mismas parejas clave/valor.
$b
$a Identida TRUE si $a y $b tienen las mismas parejas clave/valor en el mismo orden y de los
$a != Desigual
TRUE si $a no es igual a $b.
$b dad
$a <> Desigual
TRUE si $a no es igual a $b.
$b dad
$a No-
TRUE si $a no es idéntica a $b.
!== $b identidad
El operador + devuelve el array del lado derecho añadido al array del lado izquierdo; para las claves que
existan en ambos arrays, serán utilizados los elementos del array de la izquierda y serán ignorados los
elementos correspondientes del array de la derecha.
<?php
- Pág. 16 de 18 -
Psy3com - Cuentos de terror
$c = $a + $b; // Unión de $a y $b
var_dump($c);
$c = $b + $a; // Unión de $b y $a
var_dump($c);
?>
Los elementos de los arrays son iguales para la comparación si éstos tienen la misma clave y valor.
<?php
$a = array("apple", "banana");
- Pág. 17 de 18 -
Psy3com - Cuentos de terror
?>
- Pág. 18 de 18 -