gratiszona
Estas en: gratiszona >> apuntes >> php

Expresiones

Las formas más básicas de expresiones son las constantes y las variables. Cuando escribes "$a = 5", estás asignando ’5’ a
$a. ’5’, obviamente, tiene el valor 5 o, en otras palabras ’5’ es una expresión con el valor 5 (en este caso, ’5’ es una
constante entera).
Después de esta asignación, esperarás que el valor de $a sea 5 también, de manera que si escribes $b = $a, esperas que se
comporte igual que si escribieses $b = 5. En otras palabras, $a es una expresión también con el valor 5. Si todo va bien, eso
es exactamente lo que pasará.
Las funciones son un ejemplo algo más complejo de expresiones. Por ejemplo, considera la siguiente función:

function foo () {
return 5;
}

Suponiendo que estés familiarizado con el concepto de funciones (si no lo estás échale un vistazo al capítulo sobre
funciones), asumirás que teclear $c = foo() es esencialmente lo mismo que escribir $c = 5, y has acertado. Las
funciones son expresiones que valen el valor que retornan. Como foo() devuelve 5, el valor de la expresión ’foo()’ es 5.
Normalmente las funciones no devuelven un valor fijo, sino que suele ser calculado.
Desde luego, los valores en PHP no se limitan a enteros, y lo más normal es que no lo sean. PHP soporta tres tipos
escalares: enteros, punto flotante y cadenas (los tipos escalares son aquellos cuyos valores no pueden ’dividirse’ en partes
menores, no como los arrays, por ejemplo). PHP también soporta dos tipos compuestos (no escalares): arrays y objetos. Se
puede asignar cada uno de estos tipos de valor a variables o bien retornarse de funciones, sin ningún tipo de limitación.

Hasta aquí, los usuarios de PHP/FI 2 no deberían haber notado ningún cambio. Sin embargo, PHP lleva las expresiones
mucho más allá, al igual que otros lenguajes. PHP es un lenguaje orientado a expresiones, en el sentido de que casi todo es
una expresión. Considera el ejemplo anterior ’$a = 5’. Es sencillo ver que hay dos valores involucrados, el valor de la
constante entera ’5’, y el valor de $a que está siendo actualizado también a 5. Pero la verdad es que hay un valor adicional
implicado aquí, y es el valor de la propia asignación. La asignación misma se evalúa al valor asignado, en este caso 5. En la
práctica, quiere decir que ’$a = 5’, independientemente de lo que hace, es una expresión con el valor 5. De esta manera,
escribir algo como ’$b = ($a = 5)’ es como escribir ’$a = 5; $b = 5;’ (un punto y coma marca el final de una instrucción).
Como las asignaciones se evalúan de derecha a izquierda, puedes escribir también ’$b = $a = 5’.

Otro buen ejemplo de orientación a expresiones es el pre y post incremento y decremento. Los usuarios de PHP/FI 2 y los
de otros muchos lenguajes les sonará la notación variable++ y variable–. Esto son las operaciones de incremento y
decremento. En PHP/FI 2, la instrucción ’$a++’ no tiene valor (no es una expresión), y no puedes asignarla o usarla de
ningún otro modo. PHP mejora las características del incremento/decremento haciéndolos también expresiones, como en
C. En PHP, como en C, hay dos tipos de incremento - pre-incremento y post-incremento. Ambos, en esencia, incrementan
la variable y el efecto en la variable es idéntico. La diferencia radica en el valor de la propia expresion incremento. El
preincremento , escrito ’++$variable’, se evalúa al valor incrementado (PHP incrementa la variable antes de leer su valor,
de ahí el nombre ’preincremento’). El postincremento, escrito ’$variable++’, se evalúa al valor original de $variable antes
de realizar el incremento (PHP incrementa la variable después de leer su valor, de ahí el nombre ’postincremento’).

Un tipo muy corriente de expresiones son las expresiones de comparación. Estas expresiones se evalúan a 0 o 1,
significando FALSO (FALSE) o CIERTO (TRUE), respectivamente. PHP soporta > (mayor que), >= (mayor o igual que),
== (igual que), != (distinto), < (menor que) y <= (menor o igual que). Estas expresiones se usan frecuentemente dentro de
la ejecución condicional como la instrucción if.

El último tipo de expresiones que trataremos, es la combinación operador-asignación. Si quieres incrementar
$a en 1, basta con escribir ’$a++’ o ++$a’. Pero qué pasa si quieres añadir más de 1, por ejemplo 3? Podrías escribir ’$a++’
múltiples veces, pero no es una forma de hacerlo ni eficiente ni cómoda. Una práctica mucho más corriente es escribir ’$a
= $a + 3’. ’$a + 3’ se evalúa al valor de $a más 3, y se asigna de nuevo a $a, lo que resulta en incrementar $a en 3. En PHP,
como en otros lenguajes como C, puedes escribir esto de una forma más concisa, que con el tiempo será más clara y
también fácil de entender. Añadir 3 al valor actual de $a se puede escribir como ’$a += 3’. Esto quiere decir exactamente
"toma el valor de $a, súmale 3, y asígnalo otra vez a $a". Además de ser más corto y claro, también resulta en una
ejecución más rápida. El valor de ’$a += 3’, como el valor de una asignación normal y corriente, es el valor asignado. Ten
en cuenta que NO es 3, sino el valor combinado de $a más 3 (ése es el valor asignado a $a). Cualquier operación binaria
puede ser usada en forma de operador-asignación, por ejemplo ’$a -= 5’ (restar 5 del valor de $a), ’$b *= 7’ (multiplicar el
valor de $b por 5), etc.

Hay otra expresión que puede parecer extraña si no la has visto en otros lenguaes, el operador condicional ternario:

$first ? $second : $third

Si el valor de la primera subexpresión es verdadero (distinto de cero), entonces se evalúa la segunda subexpresión, si no, se
evalúa la tercera y ése es el valor.

El siguiente ejemplo te ayudará a comprender un poco mejor el pre y post incremento y las expresiones en general:
function double($i) {
return $i*2;
}
$b = $a = 5; /* asignar el valor cinco a las variables $a y $b */
$c = $a++; /* postincremento, asignar el valor original de $a (5) a $c */
$e = $d = ++$b; /* preincremento, asignar el valor incrementado de $b (6) a
$d y a $e */
/* en este punto, tanto $d como $e son iguales a 6 */
$f = double($d++); /* asignar el doble del valor de $d antes
del incremento, 2*6 = 12 a $f */
$g = double(++$e); /* asignar el doble del valor de $e después
del incremento, 2*7 = 14 a $g */
$h = $g += 10; /* primero, $g es incrementado en 10 y termina valiendo 24.
después el valor de la asignación (24) se asigna a $h,
y $h también acaba valiendo 24. */

Al principio del capítulo hemos dicho que describiríamos los distintos tipos de instrucciones y, como prometimos, las
expresiones pueden ser instrucciones. Sin embargo, no todas las expresiones son instrucciones. En este caso, una
instrucción tiene la forma ’expr’ ’;’, es decir, una expresión seguida de un punto y coma. En ’$b=$a=5;’, $a=5 es una
expresión válida, pero no es una instrucción en sí misma. Por otro lado ’$b=$a=5:’ sí es una instrucción válida.
Una última cosa que vale la pena mencionar, es el valor booleano de las expresiones. En muchas ocasiones, principalmente
en condicionales y bucles, no estás interesado en el valor exacto de la expresión, sino únicamente si es CIERTA (TRUE) o
FALSA (FALSE) (PHP no tiene un tipo booleano específico). El valor de verdad de las expresiones en PHP se calcula de
forma similar a perl. Cualquier valor numérico distinto de cero es CIERTO (TRUE), cero es FALSO (FALSE). Fíjate en
que los valores negativos son distinto de cero y considerados CIERTO (TRUE)! La cadena vacía y la cadena "0"son
FALSO (FALSE); todas las demás cadenas son TRUE. Con los tipos no escalares (arrays y objetos) - si el valor no
contiene elementos se considera FALSO (FALSE), en caso contrario se considera CIERTO (TRUE).
PHP te brinda una completa y potente implementación de expresiones, y documentarla enteramente está más allá del
objetivo de ete manual. Los ejemplos anteriores, deberían darte una buena idea de qué son las expresiones y cómo construir
expresiones útiles. A lo largo del resto del manual, escribiremos expr para indicar una expresión PHP válida.

 


Anterior:
constantes en php


Siguiente:
operadores en php

 articulos relacionados
introduccion a php
sintaxis basica de php
comentarios en php
tipos de datos en php
conversion de cadenas en php
arrays en php
declaracion de tipos
variables en php
ambito de las variables
variables externas a php
constantes en php
expresiones en php
operadores aritmeticos, asignacion, incremento, decremento, logicos, cadenas
if , else, elseif en php
while y do while en php
bucle for en php
foreach en php
break y continue en php
switch en php
require en php
include en php
require_once
funciones en php
class: clases en php
manejo de errores en phph
creacion de imagenes gif
autentificacion http con php
envio de archivos
conexiones en php
conexiones persistentes en php



Actualizado: 12/06/2008

Mejor Internet Explorer o

Si has encontrado esta web de tu agrado, ¡ diselo a tus amigos ! Nos ayudas a cubrir gastos si con un simple SMS te bajas a tu movil un logo, un tono o una melodia polifonica desde:

www.gratiszona.com/moviles
www.conmovil.com


¿Quieres LIGAR? Envía un mensaje con la palabra LIGAR.592 al 5511 y comienza a ligar y hacer amigos. ¡ASI DE FACIL!. OJO: no te equivoques al escribir o no funcionara







· ·
 apuntes
   comunicaciones
   javascript
   lenguaje c
   php
 autoayuda
 bolsa
 bricolage
 chistes
 deportes
 email
 empleo
 fotografia digital
 marcas movil
 mascotas
 motor
 moviles
 mp3
 ocio
 pisos
 plantas
 programas
 recetas
 sabiasque
 salud
 thermomix
 tienda
 timos
 trucos
 trucos juegos
 virus y seguridad
 webmaster

Ir a inicio  Añadir a favoritos  recetas de cocina  moviles y juegos
Google