| |
|
|
| |
-
PHP - Elementos estructurales - Operadores y expresiones
-
Una expresión combina un grupo de valores para formar un nuevo valor. Esos valores, puede ser constantes variables y funciones.
En una expresión encontrará operadores y operandos.
Operadores son símbolos, los cuales producen resultados de acuerdo con reglas, las que se encuentran implementadas en el lenguaje. Estos símbolos son +, -,
=, < y >.
Existe el operador de concatenación (que es el punto " . ") que junta dos cadenas de caracteres, el de referencia (ampersand &) que crea un alias para
una variable y el de asignación ( = ) que asigna un valor a una variable.
Operadores aritméticos
Los operadores aritméticos toman los valores literales o variables numéricos y devuelven un valor numérico.
Operadores de asignación
El operador de asignación puede combinarse con operadores aritméticos para realizar operaciones. Ejemplo de ello es:
$a = $a + 2
lo cual puede expresarse como sigue:
$a += 2
Operador de autoincremento y autodecremento
Estos operadores incrementan o decrementan el valor del operando en 1.
Este operador puede aparecer antes (preincremento -decremento) o después (postincremento -decremento) de una variable.
En expresiones complejas, el posicionamiento de estos operadores resulta importante, ya que el resultado para ambos casos es diferente.
Tomemos como ejemplo el siguiente código:
<head>
<title>Usando constantes predefinidas y mágicas</title>
</head>
<body bgcolor="#eceaf3">
<font face = "verdana" size='+1'>
<?php
$a=3; $b=0;
//primero se incrementa $a en 1 y luego se asigna el valor $b
$b = ++$a;
print "<h1>Preincremento: <br>";
print "\$b es $b.<br>";
print "\$a es $a.<br>";
print "<hr>";
$a=3; $b=0;
$b = $a++;
print "<h1>Postincremento: <br>";
print "\$b es $b.<br>";
print "\$a es $a.<br>";
?>
</font>
</body>
</html>
En el primer caso (preincremento), el operador se aplica a $a, lo que implica que $a se incrementa antes de hacer la asignación. El valor de $a originalmente era
3 y tras el incremento es 4. A $b se le asigna el valor 4 y al final el valor de $a es 4, así como el valor de $b es 4.
En el segundo caso (postincremento), el operador de incremento se aplica a $a tras la asignación.
A la variable $b se le asigna el valor 3 y posteriormente $a se incrementas en 1, con lo que el valor de $a es 3 y el valor de $b es 4.
Operadores de conversión
Al asignarle valores a una variable o evaluar una expresión, PHP convierte los valores automáticamente, decide internamente, como manejar las expresiones.
En ocasiones, resulta de interés forzar la conversión de un tipo a otro, lo que es posible con los operadores de conversión.
La conversión no cambia el valor de la variable, sólo afecta al modo en que otros operadores interpretan el valor, por ejemplo resulta útil cuando se
requiera convertir cadenas de caracteres a enteros o arrays a objetos.
Los operadores de conversión son los siguientes:
| Operador |
Cambia el tipo de dato a |
int
|
Entero |
float
|
Coma flotante |
string
|
Cadena de caracteres |
bool
|
Booleano |
array
|
Array |
Operador de concatenación
Con este operador se unen cadenas de caracteres y radica en un punto (" . "), respecto a cual se coloca un string a la derecha y uno a la izquierda.
Si uno de los operandos es un número y el otro, una cadena de caracteres, PHP los procesa como cadenas de caracteres.
Operadores de comparación
Cuando se efectúen operaciones de comparación, los operandos utilizan los operadores relacionales y los operadores de igualdad. Los operandos pueden ser
números o cadenas de caracteres. El resultado es un valor booleano, verdadero o falso.
Las comparaciones pueden ser numéricas, en ese caso, se compararán dos números, por ejemplo 3 > 2.
Al comparar dos cadenas de caracteres, estas se comparan letra a letra, utilizando los valores ASCII para representar el valor numérico de cada letra.
Operadores de comparación:
| Operador/Operandos |
Función |
$a == $b
|
$a es igual a $b |
$a != $b
|
$a no es igual a $b |
$a > $b
|
$a es mayor que $b |
$a >= $b
|
$a es mayor o igual que $b |
$a < $b
|
$a es menor que $b |
$a <= $b
|
$a es menor o igual que $b |
$a === $b
|
$a es idéntico en valor y tipo a $b |
$a !== $b
|
$a no es idéntico a $b |
Dos cadenas de caracteres son iguales, cuando tienen la misma secuencia de caracteres, la misma longitud y los mismos caracteres en sus posiciones respectivas. Tenga
en cuenta que en este caso, PHP es sensitivo a mayúscula y minúsculas (diferencia entre ellas).
Dos números son iguales, cuando tienen el mismo valor numérico.
Los ceros positivos y negativos, son iguales.
Dos objetos son iguales, si se refieren al mismo objeto.
Los operadores "===" y "!==" no se limitan a comprobar si sus operandos tienen el mismo valor, si no que se refieren a si son del mismo tipo. Por
ejemplo, la cadena 61 es igual al número 61, pero no son idénticos, ya que uno es una cadena de caracteres y el otro es un número.
Comparación numérica
La comparación numérica de los operandos se realiza si:
- los dos operandos son números
- un operando es un número y el otro una cadena de números
- los dos operandos son cadenas de números
Comparar cadenas de caracteres
PHP no posee operadores diferentes para números y cadenas de caracteres, por lo que el programador debe asegurarse de los valores que pretende comparar.
La diferencia principal entre la comparación de cadenas de caracteres y la de números es que los números se comparan en forma numérica, mientras
que las cadenas de caracteres se comparan basándose en el juego de caracteres ASCII.
Las cadenas de caracteres se comparan carácter a carácter, de izquierda a derecha y si son exactamente las mismas, entonces son iguales. Cuando un carácter
difiere del correspondiente en la segunda cadena, se detiene la comparación y se evalúan los caracteres diferentes.
Operadores lógicos
Los operadores lógicos se utilizan para analizar combinaciones de expresiones y el resultado es un valor booleano, verdadero y falso (true o false). Los encontrará
cuando se requiera combinar condiciones. La comprobación de dichas condiciones, pueden ser verdadera, falsa o NULL.
OR
El resultado es verdadero, si por lo menos una de las dos condiciones es verdadera.
AND
El resultado es verdadero, si las dos condiciones son verdaderas.
NOT
Negación o inversión de la expresión.
XOR
El resultado es verdadero, si una (i solo una) de las dos condiciones es verdadera.
Operadores lógicos:
| Ejemplo |
Nombre |
Resultado |
$a && $b
|
AND
|
Verdadero, si $a y $b son verdaderos |
$a || $b
|
OR
|
Verdadero, si $a o $b son verdaderos |
$a or $b
|
AND
|
Verdadero, si $a y $b son verdaderos |
$a or $b
|
OR
|
Verdadero, si $a o $b son verdaderos |
$a xor $b
|
XOR
|
Verdadero, si $a o $b son verdaderos, pero no los dos |
! $a
|
NOT
|
Verdadero, si $a no es verdadero |
Los operadores lógicos pueden combinarse con los operadores relacionales para obtener expresiones que sirvan para evaluar condiciones.
Estas expresiones se utilizan en sentencias "if".
Operador condicional
Este operador es ternario, ya que utiliza tres operandos. Se usa como un método abreviado de las sentencias condicionales "if – else".
Operadores a nivel de bits
Estos operadores se utilizan para trabajar con gráficos, encriptación, registros, entre otras, operaciones en las que es necesario mover los bits.
Cuando se trabaja con los operadores "&", "|", "^" y "~", cada bit del primer operando se empareja con el bit correspondiente del
segundo operando.
Las operaciones con bits, le permite al ordenador realizar operaciones básicas como la multiplicación.
Al correr los dígitos a la izquierda, se multiplicara el número por dos, tantas veces como los lugares que se corra. Al correr los dígitos a la derecha, se
realizará la operación contraria, o sea, dividirá el número por dos, tantas veces como los lugares que se corra.
Los valores que manipulan los operadores se llaman operandos.
Los operandos pueden ser cadenas de caracteres, números y variables booleanas y/o una combinación de todos ellos.
Una línea de código en un programa, se llama sentencia y es completada por un punto y coma ( ; ).
En una sentencia de asignación, se evalúa la expresión del lado derecho del signo de igualdad (=) y asigna el resultado a la variable que se encuentra en el
lado izquierdo del signo (=).
Las expresiones están sometidas a reglas de precedencia y asociatividad, las que determinan como deben avaluarse las expresiones.
Precedencia se refiere al modo en que los operadores serán procesados. Digamos, por ejemplo, que la suma tiene mayor prioridad que la división (primero se hace la suma
y posteriormente, la división), o que la asignación tiene mayor prioridad que la multiplicación.
Los operadores se organizan, de acuerdo con la precedencia, en una jerarquía.
Cualquier expresión que esté entre paréntesis, poseerá mayor preferencia. En la expresión
3*(5-2)
primero se efectuará la sustracción de 5-2 y el resultado 3 se multiplicará con 3, 9.
Cuando las expresiones contengan más de una agrupación (paréntesis en paréntesis), el orden de ejecución será de adentro hacia fuera.
Asociatividad, se refiere al orden en que un operador evalúa los operandos.
Cuando todos los operadores de una expresión tienen la misma precedencia, la asociación indica que el orden de evaluación se haga de izquierda a derecha o de
derecha a izquierda.
La tabla siguiente muestra las reglas de precedencia y asociatividad. Los operadores que están en la misma línea, tienen la misma precedencia. Las filas de las columnas
están ordenadas de mayor a menor precedencia.
| Operador |
Descripción
|
Asociatividad |
( )
|
Paréntesis
|
de izquierda a derecha |
new
|
crea un objeto
|
no asociativo |
[
|
subíndice de array
|
de derecha a izquierda |
++ --
|
autoincremento, autodecremento
|
no asociativo |
¡ ~ -
|
negación lógica, negación a nivel de bit, negación
|
no asociativo |
(int) (float) (string) (array) (object)
|
conversion de tipo
|
|
@
|
inhibe errores
|
|
* / %
|
Multiplicación, divición, módulo
|
de izquierda aderecha |
+ - .
|
suma, resta, concatenación de cadenas de caracteres
|
de izquierda a derecha |
<< >>
|
desplazamiento a la izquierda, desplazamiento a la derecha
|
de izquierda a derecha |
< <=
|
menor que, menor o igual que
|
de izquierda a derecha |
> >=
|
mayor que, mayor o igual que
|
de izquierda a derecha |
== !=
|
igual que, diferente a
|
no asociativo |
=== !==
|
Idéntico a (mismo tipo), no identico a
|
no asociativo |
&
|
AND a nivel de bit
|
de izquierda a derecha |
^
|
XOR a nivel de bit
|
de izquierda a derecha |
|
|
OR a nivel de bit
|
de izquierda a derecha |
&&
|
AND lógico
|
de izquierda a derecha |
||
|
OR lógico
|
de izquierda a derecha |
? :
|
ternario, condicional
|
de izquierda a derecha |
= += -= *=
|
asignación
|
de izquierda a derecha |
and /= %= <<= >>=
|
AND lógico
|
de izquierda a derecha |
xor
|
XOR lógico
|
de izquierda a derecha |
or
|
OR lógico
|
de izquierda a derecha |
,
|
separador
|
|
 |
|
Ultima actualisación: Tue, 24 ▪ May ▪ 2011
|
|
|
|