Modulo1 - Introduccion Al Comercio Electronico y PHP
Modulo1 - Introduccion Al Comercio Electronico y PHP
$a = 1; /* mbito global */
Function Test () {
echo $a; /* referencia a una variable de mbito local */
}
Test ();
Este script no producir salida, ya que la rden echo utiliza una versin local de la variable $a,
gnado ningn valor en su mbito.
una pequea diferencia con el lenguaje C, en el que las variables
sponibles automticamente dentro de la funcin a menos que sean
reescritas por una definicin local. Esto puede causar algunos problemas, ya
te puede cambiar variables globales inadvertidamente.
as variables globales deben ser declaradas globales dentro de la funcin si van a ser
dentro de dicha funcin. Veamos un ejemplo:
a la que no se ha asi
P
g
uede que usted note que hay
lobales estn di
expresamente sob
que la gen
En PHP, l
utilizadas
$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
El script anterior producir la salida "3". Al declarar $a y $b globales dentro de la funcin, todas
tales variables se referirn a la versin global. No hay lmite al nmero de
globales que se pueden manipular dentro de una funcin.
n segundo mtodo para acceder a las variables desde un mbito global es usando el array
las referencias a
variables
U
$GLOBALS propio de PHP3. El ejemplo anterior se puede reescribir as:
$a = 1;
$b = 2;
Function Sum () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum ();
echo $b;
El array $GLOBALS es un array asociativo con el nombre de la variable global como clave y los
contenidos de dicha variable como el valor del elemento del array.
Autor: Ing. Oscar R. Espeche
171
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
Otra caracterstica importante del mbito de las variables es la variable static. Una variable
esttica existe slo en el mbito local de la funcin, pero no pierde su valor cuando la ejecucin
del programa abandona este mbito. Consideremos el siguiente ejemplo:
Function Test () {
$a = 0;
echo $a;
$a++;
}
Esta funcin tiene poca utilidad ya que cada vez que es llamada asigna a $a el valor 0 y
representa un "0". La sentencia $a++, que incrementa la variable, no sirve para nada, ya que
n cuanto la funcin termina la variable $a desaparece. Para hacer una funcin til para contar, e
que no pierda la pista del valor actual del conteo, la variable $a debe declararse como esttica:
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Ahora, cada v
incrementar.
ez que se llame a la funcin Test(), se representar el valor de $a y se
tambin proporcionan una forma de manejar funciones recursivas. Una
iva es la que se llama a s misma. Se debe tener cuidado al escribir una funcin
que puede ocurrir que se llame a s misma indefinidamente. Hay que asegurarse
tar una forma adecuada de terminar la recursin. La siguiente funcin cuenta
ursivamente hasta 10, usando la variable esttica $count para saber cundo parar:
Las variables
funcin recurs
estticas
recursiva, ya
de implemen
rec
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test ();
}
$count--;
}
Variables variables
ables variables. Dicho de otro modo, son
ombres de variables que se pueden establecer y usar dinmicamente. Una variable normal se
A veces es conveniente tener nombres de vari
n
establece con una sentencia como:
$a = "hola";
Una variable variable toma el valor de una variable y lo trata como el nombre de una variable.
uede usar como el nombre de una variable utilizando dos
ignos de dlar. p.ej.
En el ejemplo anterior, hola, se p
s
Autor: Ing. Oscar R. Espeche
172
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
$$a = "mundo";
En este momento se han definido y almacenado dos variables en el rbol de smbolos de PHP:
$a, que contiene "hola", y $hola, que contiene "mundo". Es ms, esta sentencia:
echo "$a ${$a}";
produce el mismo resultado que:
echo "$a $hola";
p.ej. ambas producen el resultado: hola mundo.
Para usar variables variables con arrays, hay que resolver un problema de ambigedad. Si se
escribe $$a[1] el intrprete necesita saber si nos referimos a utilizar $a[1] como una variable,
o si se pretenda utilizar $$a como variable y el ndice [1] como ndice de dicha variable. La
sintaxis para resolver esta ambiguedad es: ${$a[1]} para el primer caso y ${$a}[1] para el
segundo.
Autor: Ing. Oscar R. Espeche
173
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
1.4 Variables externas a PHP
Formularios HTML (GET y POST)
Cuando se enva un formulario a un script PHP, las variables de dicho formulario pasan a estar
automticamente disponibles en el script gracias a PHP. Por ejemplo, consideremos el siguiente
formulario:
<form action="algo.php3" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
Cuando es enviado, PHP crear la variable $name, que contendr lo que sea que se introdujo
en el campo Name: del formulario.
PHP tambin maneja arrays en el contexto de variables de formularios, pero slo en una
dimensin. Se puede, por ejemplo, agrupar juntas variables relacionadas, o usar esta
caracterstica para recuperar valores de un campo select input mltiple:
<form action="array.php" method="post">
Nombre: <input type="text" name="personal[nombre]"><br>
Email: <input type="text" name="personal[email]"><br>
Pais: <br>
<select multiple name="pais[]">
<option value="Argentina">Repblica Argentina
<option value="Francia">Francia
<option value="Italia">Italia
</select>
<input type="submit">
</form>
Si la configuracin de PHP de track_vars est activada, ya sea mediante la opcin de
configuracin track_vars o mediante la directiva <?php_track_vars?>, las variables
enviadas con los mtodos POST o GET tambin se encontrarn en los arrays asociativos
globales $HTTP_POST_VARS y $HTTP_GET_VARS.
En temas subsiguientes se ahondar la explicacin del uso de formularios.
Botn Submit como imgen
Cuando se enva un formulario, es posible usar una imagen en vez del botn submit estndar
con una etiqueta como:
<input type=image src="image.gif" name="sub">
Cuando el usuario hace click en cualquier parte de la imagen, el formulario que la acompaa se
transmitir al servidor con dos variables adicionales, sub_x y sub_y. Estas contienen las
coordenadas del click del usuario dentro de la imagen.
Los ms experimentados puede notar que los nombres de variable enviados por el navegador
contienen un guin en vez de un subrayado (guin bajo), pero PHP convierte el guin en
subrayado automticamente.
Autor: Ing. Oscar R. Espeche
174
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
Cookies HTTP
PHP soporta cookies de HTTP de forma transparente tal y como estn definidas en en las
Netscape's Spec. Las cookies son un mecanismo para almacenar datos en el navegador y as
rastrear o identificar a usuarios que vuelven.
Se pueden crear cookies usando la funcin SetCookie(). Las cookies son parte de la cabecera
HTTP, as que se debe llamar a la funcin SetCookie antes de que se enve cualquier salida al
navegador. Es la misma restriccin que para la funcin header(). Cualquier cookie que se
reciba procedente del cliente ser convertida automticamente en una variable de PHP como
con los datos en los mtodos GET y POST.
Si se quieren asignar mltiples valores a una sola cookie, basta con aadir [] al nombre de la
variable. Por ejemplo:
SetCookie ("MiCookie[]", "Probando", time()+3600);
Ntese que una cookie reemplazar a una cookie anterior que tuviese el mismo nombre en el
navegador a menos que el camino (path) o el dominio fuesen diferentes.
Variables de entorno
Como ya vimos PHP hace accesibles las variables de entorno automticamente tratndolas
como variables normales.
echo $HOME; /* Shows the HOME environment variable, if set. */
Dado que la informacin que llega va mecanismos GET, POST y Cookie crean automticamente
variables de PHP, algunas veces es mejor leer variables del entorno explcitamente para
asegurarse de que se est trabajando con la versin correcta. La funcin getenv() se puede
usar para ello. Tambin se puede asignar un valor a una variable de entorno con la funcin
putenv().
Puntos en los nombres de variables de entrada
Tpicamente, PHP no altera los nombres de las variables cuando se pasan a un script. De todas
formas, hay que notar que el punto no es un carcter vlido en el nombre de una variable PHP.
Por esta razn, mire esto:
$varname.ext; /* nombre de variable no vlido */
Lo que el intrprete ve es el nombre de una variable $varname, seguido por el operador de
concatenacin, y seguido por la prueba (es decir, una cadena sin entrecomillar que no coincide
con ninguna palabra clave o reservada conocida) 'ext'. Obviamente, no se pretenda que fuese
este el resultado.
Por esta razn, es importante hacer notar que PHP reemplazar automticamente cualquier
punto en los nombres de variables de entrada por guiones bajos (subrayados).
Autor: Ing. Oscar R. Espeche
175
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
Determinacin de los tipos de variables
Dado que PHP determina los tipos de las variables y los convierte (generalmente) segn
necesita, no siempre resulta obvio de qu tipo es una variable dada en un momento concreto.
PHP incluye varias funciones que descubren de qu tipo es una variable. Son gettype(),
is_long(), is_double(), is_string(), is_array(), y is_object().
Autor: Ing. Oscar R. Espeche
176
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
1.6 Constantes
Una constante es un identificador para expresar un valor simple. Como el nombre sugiere, este
valor no puede variar durante la ejecucin del script. (Las constantes especiales __FILE__ y
__LINE__ son una excepcin a esto, ya que realmente no lo son).
Una constante es sensible a maysculas por defecto. Por convencin, los identificadores de
constantes suelen declararse en maysculas.
El nombre de una constante sigue las mismas reglas que cualquier etiqueta en PHP. Un nombre
de constante vlido empieza con una letra o un caracter de subrayado, seguido por cualquier
nmero de letras, nmeros, o subrayados. Se podran expresar mediante la siguiente expresin
regular: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Nota: Para nuestros propsitos, entenderemos como letra los carcteres a-z, A-
Z, y los ASCII del 127 hasta el 255 (0x7f-0xff).
El alcanze de una constante es global, Es decir, es posible acceder a ellas sin preocuparse por el
mbito de alcance.
Definicin de constantes
Se puede definir una constante usando la funcin define(). Una vez definida, no puede ser
modificada ni eliminada .
Solo se puede definir como constantes valores escalares (boolean, integer, float y string ).
Para obtener el valor de una constante solo es necesario especificar su nombre. A diferencia de
las variables, no se tiene que especificar el prefijo $.
Tambin se puede utilizar la funcin constant(), para obtener el valor de una constante, en el
caso de que queramos expresarla de forma dinmica Usa la funcin get_defined_constants()
parar obtener una lista de todas las constantes definidas.
Nota: Las contantes y las variables (globales) se encuentran en un espacio de
nombres distinto. Esto implica que por ejemplo TRUE y $TRUE son diferentes.
Si usas una constante todavia no definida, PHP asume que ests refirindote al nombre de la
constante en si. Se lanzar un aviso si esto sucede. Usa la funcin defined() para comprobar
la existencia de dicha constante.
Estas son las diferencias entre constantes y variables:
Las constantes no son precedidas por un smbolo de dolar ($).
Las contantes solo pueden ser definidas usando la funcin define() , nunca por simple
asignacin.
Las constantes pueden ser definidas y accedidas sin tener en cuenta las reglas de
alcanze del mbito.
Las constantes no pueden ser redefinidas o eliminadas despues de establecerse.
Las constantes solo puede albergar valores escalares.
<?php
define("CONSTANT", "Hola mundo.");
echo CONSTANT; // la salida es: "Hola mundo."
echo Constant; // la salida es: Constant y un aviso de advertencia.
?>
Autor: Ing. Oscar R. Espeche
177
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
Constantes predefinidas
PHP ofrece un largo nmero de constantes predefinidas a cualquier script en ejecucin. Muchas
de estas constantes, sin embargo, son creadas por diferentes extensines, y solo estarn
presentes si dichas extensines estn disponibles, bien por carga dinmica o porque has sido
compiladas.
Autor: Ing. Oscar R. Espeche
178
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
1.7 Expresiones
Las expresiones son la piedra angular de PHP. En PHP, cas cualquier cosa que escribes es una
expresin. La forma ms simple y ajustada de definir una expresin es "cualquier cosa que
tiene un valor".
Las formas ms bsicas de expresiones son las constantes y las variables. Cuando escribes "$a
= 5", ests asignando '5' a $a. '5', obviamente, tiene el valor 5 o, en otras palabras '5' es una
expresin con el valor 5 (en este caso, '5' es una constante entera).
Despus de esta asignacin, esperars que el valor de $a sea 5 tambin, de manera que si
escribes $b = $a, esperas que se comporte igual que si escribieses $b = 5. En otras palabras,
$a es una expresin tambin con el valor 5. Si todo va bien, eso es exactamente lo que pasar.
Las funciones son un ejemplo algo ms complejo de expresiones. Por ejemplo, considera la
siguiente funcin:
function algo () {
return 5;
}
Suponiendo que ests familiarizado con el concepto de funciones (si no lo ests chale un
vistazo al captulo sobre funciones), asumirs que teclear $c = algo(); es esencialmente lo
mismo que escribir $c = 5;, y has acertado.
Las funciones son expresiones que valen el valor que retornan. Como algo() devuelve 5, el
valor de la expresin 'algo()' es 5. Normalmente las funciones no devuelven un valor fijo, sino
que suele ser calculado.
PHP es un lenguaje orientado a expresiones, en el sentido de que cas todo es una expresin.
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 tambin a 5. Pero la
verdad es que hay un valor adicional implicado aqu, y es el valor de la propia asignacin. La
asignacin misma se evala al valor asignado, en este caso 5. En la prctica, quiere decir que
'$a = 5', independientemente de lo que hace, es una expresin 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 instruccin). Como las asignaciones se evalan de derecha a izquierda, puedes
escribir tambin '$b = $a = 5'.
Otro buen ejemplo de orientacin 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 notacin variable++ y
variable--. Esto son las operaciones de incremento y decremento.
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 idntico. La diferencia radica en
el valor de la propia expresion incremento. El preincremento , escrito '++$variable', se evala
al valor incrementado (PHP incrementa la variable antes de leer su valor, de ah el nombre
'preincremento'). El postincremento, escrito '$variable++', se evala al valor original de
$variable antes de realizar el incremento (PHP incrementa la variable despus de leer su valor,
de ah el nombre 'postincremento').
Un tipo muy corriente de expresiones son las expresiones de comparacin. Estas expresiones se
evalan 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 ejecucin
condicional como la instruccin if.
Autor: Ing. Oscar R. Espeche
179
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
El ltimo tipo de expresiones que trataremos, es la combinacin operador-asignacin. Ya sabes
que si quieres incrementar $a en 1, basta con escribir '$a++' o ++$a'. Pero qu pasa si quieres
aadir ms de 1, por ejemplo 3? Podras escribir '$a++' mltiples veces, pero no es una forma
de hacerlo ni eficiente ni cmoda. Una prctica mucho ms corriente es escribir '$a = $a + 3'.
'$a + 3' se evala al valor de $a ms 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 ms concisa, que
con el tiempo ser ms clara y tambin fcil de entender. Aadir 3 al valor actual de $a se
puede escribir como '$a += 3'. Esto quiere decir exactamente "toma el valor de $a, smale 3, y
asignalo otra vez a $a". Adems de ser ms corto y claro, tambin resulta en una ejecucin
ms rpida. El valor de '$a += 3', como el valor de una asignacin normal y corriente, es el
valor asignado. Ten en cuenta que NO es 3, sino el valor combinado de $a ms 3 (se es el
valor asignado a $a). Cualquier operacin binaria puede ser usada en forma de operador-
asignacin, por ejemplo '$a -= 5' (restar 5 del valor de $a), '$b *= 7' (multiplicar el valor de $b
por 5), etc.
Hay otra expresin que puede parecer extraa si no la has visto en otros lenguaes, el operador
condicional ternario:
$expr1 ? $expr2 : $expr3
Si el valor de la primera subexpresin es verdadero (distinto de cero), entonces se evala la
segunda subexpresin, si no, se evala 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 despus
del incremento, 2*7 = 14 a $g */
$h = $g += 10; /* primero, $g es incrementado en 10 y termina valiendo 24.
despus el valor de la asignacin (24) se asigna a $h,
y $h tambin acaba valiendo 24. */
Una ltima cosa que vale la pena mencionar, es el valor booleano de las expresiones. En
muchas ocasones, principalmente en condicionales y bucles, no ests interesado en el valor
exacto de la expresin, sino nicamente si es CIERTA (TRUE) o FALSA (FALSE) (PHP no tiene
un tipo booleano especfico).
El valor de verdad de las expresiones en PHP se calcula de forma similar a perl. Cualquier valor
numrico distinto de cero es CIERTO (TRUE), cero es FALSO (FALSE). Fjate en que los valores
negativos son distinto de cero y considerados CIERTO (TRUE)! La cadena vaca y la cadena "0"
Autor: Ing. Oscar R. Espeche
180
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
son FALSO (FALSE); todas las dems 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 implementacin de expresiones, y documentarla
enteramente est ms all del objetivo de ete manual. Los ejemplos anteriores, deberan darte
una buena idea de qu son las expresiones y cmo construir expresiones tiles. A lo largo del
resto del manual, escribiremos expr para indicar una expresin PHP vlida.
Autor: Ing. Oscar R. Espeche
181
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
1.8 Operadores
Operadores Aritmticos
Recuerdas la aritmtica bsica del colegio? Pues estos operadores funcionan exactamente
igual.
ejemplo nombre resultado
$a + $b Adicin Suma de $a y $b.
$a - $b Substraccin Diferencia entre $a y $b.
$a * $b Multiplicacin Producto de $a and $b.
$a / $b Divisin Cociente de $a entre $b.
$a % $b Mdulo Resto de $a dividido entre $b.
Operadores de Asignacin
El operador bsico de asignacin es "=". A primera vista podras pensar que es el operador de
comparacin "igual que". Pero no. Realmente significa que el operando de la izquierda toma el
valor de la expresin a la derecha, (esto es, "toma el valor de").
El valor de una expresin de asignacin es el propio valor asignado. Esto es, el valor de "$a =
3" es 3. Esto permite hacer cosas curiosas como:
$a = ($b = 4) + 5; // ahora $a es igual a 9, y $b vale 4.
Adems del operador bsico de asignacin, existen los "operadores combinados" para todas las
operaciones aritmticas y de cadenas que sean binarias. Este operador combinado te permite,
de una sola vez, usar una variable en una expresin y luego establecer el valor de esa variable
al resultado de la expresin. Por ejemplo:
$a = 3;
$a += 5; // establece $a a 8, como si hubisemos escrito: $a = $a + 5;
$b = "Hola ";
$b .= "Ah!"; // establece $b a "Hola Ah!", igual que si hicisemos $b = $b . "Ah!";
Fjate en que la asignacin realiza una nueva copia de la variable original (asignacin por
valor), por lo que cambios a la variable original no afectan a la copia. Esto puede tener inters
si necesitas copiar algo como un array con muchos elementos dentro de un bucle que se repita
muchas veces (cada vez se realizar una nueva copia del array). PHP4 soporta asignacin por
referencia, usando la sintaxis $var = &$otravar;, pero esto no es posible en PHP3. 'Asignacin
por referencia' quiere decir que ambas variables acabarn apuntando al mismo dato y que nada
es realmente copiado.
Operadores Bit a bit
Los operadores bit a bit te permiten activar o desactivar bits individuales de un entero.
ejemplo nombre resultado
$a & $b Y Se activan los bits que estn activos tanto en $a como $b.
$a | $b O
Se activan los bits que estn activos en $a o que lo estn en
$b.
$a ^ $b Xor ("o exclusiva")
Se activan los bits que estn activos en $a o en $b pero no en
ambos a la vez.
Autor: Ing. Oscar R. Espeche
182
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
ejemplo nombre resultado
~ $a No Se activan los bits que no estn activos en $a.
$a <<$b
Desplazamiento a la
izquierda
Desplaza los bits de $a, $b posiciones hacia la izquierda (por
aritmtica binaria, cada posicin desplazada equivale a
multiplicar por dos el valor de $a).
$a >> b
Desplazamiento a la
derecha
Desplaza los bits de $a, $b posiciones hacia la derecha (por
aritmtica binaria, cada posicin desplazada equivale a dividir
entre dos el valor de $a).
Operadores de Comparacin
Los operadores de comparacin, como su nombre indica, permiten comparar dos valores.
ejemplo nombre resultado
$a == $b Igualdad Cierto si $a es igual a $b.
$a === $b Identidad Cierto si $a es igual a $b y si son del mismo tipo (slo PHP4)
$a != $b Desigualdad Cierto si $a no es igual a $b.
$a < $b Menor que Cierto si $a es estrictamente menor que $b.
$a > $b Mayor que Cierto si $a es estrictamente mayor que $b.
$a <= $b Menor o igual que Cierto si $a es menor o igual que $b.
$a >= $b Mayor o igual que Cierto si $a es mayor o igual que $b.
El otro operador que ya vimos, es el operador condicional "?:" (o ternario), que funciona como
en C y otros muchos lenguajes.
(expr1) ? (expr2) : (expr3);
La expresin toma el valor expr2 si expr1 se evala a cierto, y expr3 si expr1 se evala a falso.
Operador de ejecucin
PHP soporta un operador de ejecucin: el apstrofe invertido (``). Fjate que no son
apostrofes normales! PHP intentar ejecutar la instruccin contenida dentro de los apstrofes
invertidos como si fuera un comando del shell; y su salida devuelta como el valor de esta
expresin (i.e., no tiene por qu ser simplemente volcada como salida; puede asignarse a una
variable).
$output = `ls -al`;
echo "<pre>$output</pre>";
Ver tambin system(), passthru(), exec(), popen(), y escapeshellcmd().
Operadores de Incremento/decremento
PHP soporta los operadores de predecremento y post incremento al estilo de C como ya vimos.
ejemplo nombre efecto
++$a Preincremento Incrementa $a en uno y despus devuelve $a.
$a++ Postincremento Devuelve $a y despus incrementa $a en uno.
--$a Predecremento Decrementa $a en uno y despus devuelve $a.
$a-- Postdecremento Devuelve $a y despus decrementa $a en uno.
Autor: Ing. Oscar R. Espeche
183
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
He aqu un listado de ejemplo:
<?php
echo "<h3>Postincremento</h3>";
$a = 5;
echo "Debera ser 5: " . $a++ . "<br>\n";
echo "Debera ser 6: " . $a . "<br>\n";
echo "<h3>Preincremento</h3>";
$a = 5;
echo "Debera ser 6: " . ++$a . "<br>\n";
echo "Debera ser 6: " . $a . "<br>\n";
echo "<h3>Postdecremento</h3>";
$a = 5;
echo "Debera ser 5: " . $a-- . "<br>\n";
echo "Debera ser 4: " . $a . "<br>\n";
echo "<h3>Predecremento</h3>";
$a = 5;
echo "Debera ser 4: " . --$a . "<br>\n";
echo "Debera ser 4: " . $a . "<br>\n";
?>
Operadores Lgicos
ejemplo nombre resultado
$a and $b Y Cierto si tanto $a como $b son ciertos.
$a or $b O Cierto si $a o $b son ciertos.
$a xor $b O exclusiva Cierto si $a es cierto o $b es cierto, pero no ambos a la vez.
! $a Negacin Cierto si $a no es cierto.
$a && $b Y Cierto si tanto $a como $b son ciertos.
$a || $b O Cierto si $a o $b son ciertos.
La razn de las dos variaciones de "y" y "o" es que operan con distinta precedencia.
Precedencia de Operadores
La precedencia de operadores especifica cmo se agrupan las expresiones. Por ejemplo, en la
expresin 1 + 5 * 3, la respuesta es 16 y no 18 porque el operador de multiplicacin ("*") tiene
una mayor precedencia que el de adicin ("+").
La siguiente tabla lista la precedencia de operadores, indicndose primero los de menor
precedencia.
Asociatividad Operadores
izquierda ,
izquierda or
izquierda xor
izquierda and
derecha print
Autor: Ing. Oscar R. Espeche
184
rea Tecnolgica de Educacin Virtual UTN FRC SEU
PHP, MySQL y E-Commerce Introduccin al comercio Electrnico y PHP
Asociatividad Operadores
izquierda = += -= *= /= .= %= &= |= ^= ~= <<= >>=
izquierda ? :
izquierda ||
izquierda &&
izquierda |
izquierda ^
izquierda &
no asociativo == != ===
no asociativo < <= > >=
izquierda << >>
izquierda + - .
izquierda * / %
derecha ! ~ ++ -- (int) (double) (string) (array) (object) @
derecha [
no asociativo new
Operadores de Cadenas
Como ya vimos, hay dos operadores de cadenas. El primero es el operador de concatenacin
('.'), que devuelve el resultado de concatenar sus operandos izquierdo y derecho. El segundo es
el operador de concatenacin y asignacin ('.=').
$a = "Hola ";
$b = $a . "Mundo!"; // ahora $b contiene "Hola Mundo!"
$a = "Hola ";
$a .= "Mundo!"; // ahora $a contiene "Hola Mundo!"
Autor: Ing. Oscar R. Espeche
185