OPERADORES
Precedencia
de operadores
La precedencia de un operador indica qué tan
"estrechamente" se unen dos expresiones juntas.
Por ejemplo, en la expresión 1 + 5 *
3, la respuesta es 16 y no 18 porque el operador de multiplicación
("*") tiene una precedencia mayor que el operador de adición
("+"). Los paréntesis pueden ser usados para forzar la precedencia,
si es necesario. Por ejemplo: (1 + 5) * 3 se evalúa como 18.
Cuando los operadores tienen igual precedencia su asociatividad decide
cómo se agrupan. Por ejemplo "-" tiene asociatividad a izquierda, así
1 - 2 - 3 se agrupa como (1 - 2) - 3 y se evalúa a -4. "=", por otra
parte, tiene asociatividad a derecha, así $a = $b = $c se agrupa como $a = ($b
= $c).
Los operadores de igual precedencia
que no son asociativos no pueden usarse unos junto a otros, por ejemplo, 1 <
2 > 1 es ilegal en PHP. La expresión 1 <= 1 == 1, por otro lado, es
legal, ya que el operador == tiene menos precedencia que el operador <=.
El uso de paréntesis, incluso cuando
no es estrictamente necesario, a menudo puede aumentar la legibilidad del
código haciendo grupos explícitamente en lugar de confiar en la precedencia y asociatividad
implícitas del operador.
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.
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.
OPERADORES LOGICOS
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
$a = ($b = 4) + 5; // ahora $a es igual a 9 y $b se ha establecido en 4.
?>
$a = ($b = 4) + 5; // ahora $a es igual a 9 y $b se ha establecido en 4.
?>
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;
$a += 5; // establece $a en 8, como si se hubiera dicho: $a = $a + 5;
$b = "Hola ";
$b .= "ahí!"; // establece $b en "Hola ahí!", al igual que $b = $b . "ahí!";
?>
$a = 3;
$a += 5; // establece $a en 8, como si se hubiera dicho: $a = $a + 5;
$b = "Hola ";
$b .= "ahí!"; // establece $b en "Hola ahí!", al igual que $b = $b . "ahí!";
?>
Observe 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.
Asignación
por referencia
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.
Ejemplo #1
Asignación por referencia
<?php
$a = 3;
$b = &$a; // $b es una referencia para $a
print "$a\n"; // muestra 3
print "$b\n"; // muestra 3
$a = 4; // cambia $a
print "$a\n"; // muestra 4
print "$b\n"; // muestra 4 también, dado que $b es una referencia para $a, la cual ha
// sido cambiada
?>
$a = 3;
$b = &$a; // $b es una referencia para $a
print "$a\n"; // muestra 3
print "$b\n"; // muestra 3
$a = 4; // cambia $a
print "$a\n"; // muestra 4
print "$b\n"; // muestra 4 también, dado que $b es una referencia para $a, la cual ha
// sido cambiada
?>
Operadores
de control de errores
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 generados por esa expresión será ignorado.
Si se ha establecido una función
controladora de errores personalizada con set_error_handler() entonces todavía
será llamada, pero este controlador de errores personalizado puede (y debe)
llamar a error_reporting() el cual devolverá 0 cuando la llamada que provocó el
error fue precedida por el signo @.
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
/* Error intencional de archivo */
$my_file = @file ('non_existent_file') or
die ("La apertura de archivo ha fallado: el error fue '$php_errormsg'");
// esto funciona con cualquier expresión, no solo con funciones:
$value = @$cache[$key];
// no producirá una anotación si el índice $key no existe.
?>
/* Error intencional de archivo */
$my_file = @file ('non_existent_file') or
die ("La apertura de archivo ha fallado: el error fue '$php_errormsg'");
// esto funciona con cualquier expresión, no solo con funciones:
$value = @$cache[$key];
// no producirá una anotación si el índice $key no existe.
?>
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
$output = `ls -al`;
echo "<pre>$output</pre>";
?>
$output = `ls -al`;
echo "<pre>$output</pre>";
?>
Operadores de incremento/decremento
PHP soporta
operadores estilo C de pre- y post-incremento y decremento.
Nota: Los
operadores de incremento/decremento solamente afectan a números y strings. Los
arrays, objects y resources no se ven afectados. Decrementar valores NULL
tampoco tiene efecto, pero incrementarlos entonces resulta en 1.
Ejemplos:
<?php
echo "<h3>Postincremento</h3>";
$a = 5;
echo "Debe ser 5: " . $a++ . "<br />\n";
echo "Debe ser 6: " . $a . "<br />\n";
echo "<h3>Preincremento</h3>";
$a = 5;
echo "Debe ser 6: " . ++$a . "<br />\n";
echo "Debe ser 6: " . $a . "<br />\n";
echo "<h3>Postdecremento</h3>";
$a = 5;
echo "Debe ser 5: " . $a-- . "<br />\n";
echo "Debe ser 4: " . $a . "<br />\n";
echo "<h3>Predecremento</h3>";
$a = 5;
echo "Debe ser 4: " . --$a . "<br />\n";
echo "Debe ser 4: " . $a . "<br />\n";
?>
echo "<h3>Postincremento</h3>";
$a = 5;
echo "Debe ser 5: " . $a++ . "<br />\n";
echo "Debe ser 6: " . $a . "<br />\n";
echo "<h3>Preincremento</h3>";
$a = 5;
echo "Debe ser 6: " . ++$a . "<br />\n";
echo "Debe ser 6: " . $a . "<br />\n";
echo "<h3>Postdecremento</h3>";
$a = 5;
echo "Debe ser 5: " . $a-- . "<br />\n";
echo "Debe ser 4: " . $a . "<br />\n";
echo "<h3>Predecremento</h3>";
$a = 5;
echo "Debe ser 4: " . --$a . "<br />\n";
echo "Debe ser 4: " . $a . "<br />\n";
?>
Operadores para strings
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.
<?php
$a = "Hello ";
$b = $a . "World!"; // ahora $b contiene "Hello World!"
$a = "Hello ";
$a .= "World!"; // ahora $a contiene "Hello World!"
?>
$a = "Hello ";
$b = $a . "World!"; // ahora $b contiene "Hello World!"
$a = "Hello ";
$a .= "World!"; // ahora $a contiene "Hello World!"
?>
OPERADORES PARA ARRAYS:
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
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Unión de $a y $b
echo "Union of \$a and \$b: \n";
var_dump($c);
$c = $b + $a; // Unión de $b y $a
echo "Union of \$b and \$a: \n";
var_dump($c);
?>
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Unión de $a y $b
echo "Union of \$a and \$b: \n";
var_dump($c);
$c = $b + $a; // Unión de $b y $a
echo "Union of \$b and \$a: \n";
var_dump($c);
?>







.jpg)
0 comentarios:
Publicar un comentario