Vous êtes sur la page 1sur 22

Bases de la sintaxis

Como vimos en la introduccin al lenguaje, la insercin de PHP en


HTML se hace mediante etiquetas especiales
<?php .... ?>
Sin embargo, hay varias formas alternativas posibles, aunque casi
siempre veremos la ya comentada:

<? .... ?> Slo si se activa la funcin short_tags() o la


bandera de configuracin short_open_tag.

<?php .... ?>

<script languaje="php"> .... </script>

<% .... %> Slo si se activan las etiquetas para ficheros 'asp'
con la bandera de configuracin asp_tags.

Al programar debemos separar las diferentes instrucciones con ';'


Es la forma en que le indicamos al lenguaje dnde termina cierta
instruccin.
Habitualmente, para hacer ms comprensible (a los humanos) el
cdigo, se suelen incluir comentarios; en PHP se pueden incluir de las
siguientes formas:

podemos comentar varias lneas, quedando comentado todo lo


que aparezca entre /* y */

tambin podemos comentar slo una lnea, comenzando con


doble-barra // de forma que lo que queda a la derecha de la
doble barra se ignora (es el comentario)

otro tipo de comentario de una lnea es #, que comentar la


lnea en la que aparezca pero slo hasta el tag ?> que cierra el
cdigo php.

2. Variables y tipos de datos


Como se coment antes en la seccin de "Conceptos bsicos de
programacin", PHP es un lenguaje no-tipificado, lo que quiere decir
que el intrprete de PHP asigna el tipo de una variable segn el uso
que se est haciendo de ella.
Por otro lado, en PHP una variable no necesita estar declarada antes
de darle un valor. Adems, PHP convierte automticamente la
variable al tipo de datos que almacena. En un lenguaje fuertemente
tipificado (C/C++ o Java) debemos indicar el tipo en la declaracin,
mientras que en PHP no es necesario, lo que hace que programar
resulte ms rpido.
Variables
Una variable en PHP define su tipo segn el contenido y el contexto
en el que se utilice, es decir, si se asigna una cadena a una variable,
el tipo de esa variable ser string. Si a esa misma variable se le
asigna un nmero, el tipo cambiar a entero.
Una cuestin muy importante es que todo nombre de variable debe
estar precedido por el smbolo $
Tipos de datos numricos
Cuando estamos programando, los datos los iremos guardando en
variables, para poder trabajar con ellos posteriormente.
Las variables de tipo numrico almacenarn datos enteros o reales.

Al trabajar con este tipo de datos podremos asignar valores


constantes a las variables al crearlas. Asimismo, podemos usar
operadores aritmticos para realizar operaciones aritmticas y
lgicas:
<?php
$numero = 3 ;
$contador = 2.5 ;
$suma = $numero + $contador;
echo $suma;
?>
En este programa hemos inicializado dos variables con valores
numricos, las hemos sumado, y por ltimo, mediante el operador
"echo" hemos mostrado el valor resultante de la suma (almacenada
en la variable llamada $suma).
Tipo string
Otro tipo de datos son las cadenas de caracteres, que almacenan
ristras de letras y smbolos.
Las cadenas pueden estar delimitadas por comillas dobles " o simples
'. Habitualmente se usan las comillas dobles para definirlas.
Dentro de una cadena podemos hacer uso de otras variables, de
forma que el valor de aquellas se "expande" en la cadena:
<?php
$cadena = "hola adios" ;
$str = "la cadena vale $cadena \n";
echo $str;
?>
Este programa expande el valor que hemos dado a la variable
llamada $cadena dentro de la variable llamada $str

As, al mostrar el valor de sta ltima con el operador "echo", lo que


hacemos es mostrar:
la cadena vale hola adios
Si la cadena est delimitada por comillas dobles, cualquier variable
incluida dentro de ella ser sustituida por su valor. En ocasiones
querremos usar dentro de las cadenas caracteres especiales. En esos
casos, para especificarlos debemos "escaparlos", lo que significa
anteponerles el carcter backslash (\). Por ejemplo, un retorno de
carro se representa con \n
Las operaciones con cadenas de caracteres son muy similares en
todos los lenguajes de programacin.
Hay varias funciones de cadena muy utilizadas. Podemos generar la
fecha y hora actuales usando la funcin date()
$fecha_generada = date("Y\-n\-j H\:i\:s");
As, la variable llamada $fecha_generada contendr una fecha y hora
del tipo "2012-04-23 12:34:23".
Podemos trocear una cadena a partir de un carcter, usando la
funcin explode() para obtener un array en el que cada casilla del
array contendr una porcin de la cadena inicial:
$trocitos = explode( "#" , $cadena );
En la siguiente direccin encontraremos la gua completa de las
funciones de cadenas de PHP:
http://www.w3schools.com/PHP/php_ref_string.asp

Hemos visto las primeras caractersticas de PHP. Vamos a detallar


cmo probar los programas que hagamos. Supongamos que hemos
hecho el siguiente script PHP:

<html>
<body>
<b>Hagamos una suma</b>:<BR>
<?php
$numero = 3 ;
$contador = 2.5 ;
$suma = $numero + $contador;
echo $suma;
?>
<BR><HR><BR>
<I>Y ahora mostraremos la fecha de hoy</I> <BR>:
<?php
$fecha = date("Y\-n\-j H\:i\:s");
echo $fecha;
?>
</body>
</html>
Para ejecutarlo debemos guardar ese documento de texto con
extensin .php en el espacio web de tu servidor (si estamos usando
XAMPP, debe estar en c:\xampp\htdocs\ ). Supongamos que le
damos por nombre variables.php. Una vez hecho eso, abrimos un
navegador web, y teniendo lanzado en el panel de control de XAMPP
el servidor Apache, nos conectamos en el navegador a la siguiente
URL: http://localhost/variables.php
Como resultado, en el navegador veremos el resultado de ejecutar
nuestro script PHP (en este caso, el valor de la suma de esas variables
numricas seguido de un mensaje en cursiva, la fecha y la hora).
En este ejemplo vemos que se pueden poner tantos bloques de
cdigo PHP como queramos dentro del cdigo HTML (aunque en

muchos ejemplos veamos slo un bloque).

3. Arrays
Para trabajar con un array (o vector de valores), podemos imaginar
que disponemos de una cajonera en la que los cajones estn
numerados. De esta forma, podramos acceder al elemento i-simo de
la cajonera, y lo que estaremos haciendo es acceder al elemento isimo del array.
Los Arrays en PHP se pueden utlizar tanto como Arrays indexados o
como Arrays asociativos. En realidad no existe ninguna diferencia
entre ellos. Cuando estemos aadiendo datos a un array, si no se
especifica el ndice del elemento al que queremos acceder, se
entender que queremos asiganr el valor aadiendo el dato al final
(como ltimo elemento).
Uno de los usos ms comunes al usar un vector de datos es
almacenar elementos que sern ordenados posteriormente. As, los
arrays pueden ser ordenados utilizando las siguientes funciones:
asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort() y uksort().
Otras operaciones muy comunes son el recuento de elementos y el
recorrido de los datos almacenados en el array, que se pueden
realizar con las funciones: count(), next(), prev() y each().

Arrays indexados
Un array indexado almacena cada elemento con un ndice asociado.
Hay dos formas de crear un array de este tipo:
1. Crear el array automticamente, comenzando en el ndice 0
(asignado al primer valor):
$nombres=array("pepe","juan","luisa","antonia");

2. Asignar los ndices manualmente:


$nombres[0]="pepe";
$nombres[1]="juan";
$nombres[2]="luisa";
$nombres[3]="antonia";
A continuacin veremos cmo acceder a los elementos que almacena
el array usando los ndices asociados:
<?php
$nombres[0]="pepe";
$nombres[1]="juan";
$nombres[2]="luisa";
$nombres[3]="antonia";
echo $nombres[0] . " y " . $nombres[1] . " son chicos.";
?>
Arrays Asociativos
En un array asociativo cada elemento est asociado a un
identificador-clave. Hay dos formas de crear el array:
1. En el siguiente ejemplo, usaremos un array asociativo para guardar
datos de varias personas:
$edad = array(
"Pedro"=>32,
"Juan"=>30,
"Antonio"=>34
);
2. En este otro caso, creamos un array idntico al anterior, pero
usando una sentencia para cada elemento:

$edad['Pedro'] = "32";
$edad['Juan'] = "30";
$edad['Antonio'] = "34";
La forma de usar estos arrays en un script es:
<?php
$edad['Pedro'] = "32";
$edad['Juan'] = "30";
$edad['Antonio'] = "34";
echo "Pedro tiene " . $edad['Pedro'] . " aos.";
?>
Arrays Multidimensionales
Podemos trabajar tambin con matrices multidimensionales, como
por ejemplo, una matriz cuadrada (dos dimensiones).
Para dar soporte a los arrays multidimensionales en PHP se combinan
las propiedades de un array unidimensional. Los ndices de un array
multidimensional pueden ser tanto numricos como asociativos.
La idea es que cada elemento del array principal ser a su vez un
array:
$matriz = array(
0 => array(5,8,2),
1 => array(4,6,1)
);
echo " $matriz[0][1] \n";
echo " $matriz[1][0] \n";
Este ejemplo nos mostrar por pantalla el 8 y el 4, ya que hemos
accedido a los elementos (0,1) y (1,0) de ese array multidimensional
(matriz cuadrada).
Incluso, podemos hacer que cada elemento de cada sub-array sea

otro array (y as sucesivamente).


Veamos un ejemplo de array multidimensional asociativo:
$a=array(
"manzana" => array("color" => "rojo", "tacto" => "suave"),
"naranja" => array("color" => "naranja", "tacto" =>
"rugoso"),
"platano" => array("color" => "amarillo", "tacto" =>
"suave")
);
Disponemos de otras sintaxis ms compactas para asignar
automticamente las claves identificadoras:
$familias = array (
"Gracia"=>array ( "Pedro", "Luisa", "Martina" ),
"Sanz"=>array( "Gerardo", "Felisa" ),
"Martos"=>array( "Carlos", "Lorenzo", "Julia" )
);
A partir de ese array, podemos hacer el siguiente acceso:
echo "El segundo miembro de la familia Gracia es " .
$familias['Gracia'][2] ;

Gua Completa del manejo de Arrays en PHP


En la siguiente direccin encontraremos la gua completa de las
funciones de manejo de arrays de PHP:
http://www.w3schools.com/PHP/php_ref_array.asp
Por ltimo, aunque no es una funcin muy utilizada (salvo si estamos
usando arrays muy muy grandes), existe la funcin unset()para
eliminar la definicin de una variable escalar o un array:

<?php
$nombres=array("pepe","juan","luisa","pepa");
unset( $nombres[0] );
unset( $nombres );
?>

4. Expresiones y operadores
Una expresin es una combinacin de operadores y operandos que al
ser evaluados generan un valor. Los operandos suelen ser nombres de
variables o constantes, pero tambin pueden ser funciones (ya que
devuelven un valor). La evaluacin de una expresin da lugar a otro
valor (normalmente un nmero o una cadena de caracteres, aunque
puede ser tambin un valor lgico, etc).
Las expresiones ms simples son las variables y las constantes y
otras ms complicadas sern las funciones, puesto que cada funcin
devuelve un valor al ser invocada, es decir, contiene un valor, por lo
tanto, es una expresin.
Al igual que cuando evaluamos expresiones matemticas, al
programar las expresiones se evalan de acuerdo con la precedencia
de los operadores. Ante una secuencia de operadores de igual
precedencia, la evaluacin se realiza segn el orden de escritura, de
izquierda a derecha. El orden de evaluacin puede modificarse
usando parntesis.
Existen diferentes tipos de operadores: aritmticos, de asignacin, de
comparacin y lgicos. En realidad, todos los operadores, y la forma
de usarlos es muy similar en todos los lenguajes de programacin. De
hecho, las expresiones en PHP se parecen mucho a las otros
lenguajes como el C, Java o Perl.
Las siguientes tablas muestran los diferentes operadores disponibles
en PHP:

Operadores aritmticos

Operadores de asignacin

Operadores de comparacin

Operadores lgicos

Veamos a continuacin varios ejemplos del uso de los operadores de


PHP en expresiones aritmticas y de comparacin:

5. Estructuras de control
Condicionales

Cuando estamos escribiendo cdigo, de cuando en cuando,


querremos ejecutar diferentes porciones de cdigo en funcin de
ciertas condiciones. En estos casos debemos usar las sentencias
condicionales.
En PHP disponemos de las siguientes sentencias:

if : se usa para ejecutar una sola porcin de cdigo si la


condicin es verdadera

if...else : se usa para ejecutar una u otra en funcin de la


condicin

if...elseif....else : podemos especificar varios bloques de


cdigo en funcin de varias condiciones diferentes

switch : con esta otra podemos especificar muchos bloques


diferentes

A continuacin mostramos varios ejemplos de las diferentes


construcciones condicionales.
La construccin if es muy parecida a la utilizada en C. La sintaxis de
la instruccin if es la siguiente (la parte else es opcional):
<html><body>
<?php
$a=3;
$b=7+5
if ( $a == $b ) {
echo "son iguales";
}
?>
</body></html>

<html><body>
<?php

$d=date("D");
if ( $d == "Fri" )
echo "es viernes";
else
echo "es otro da diferente al viernes";
?>
</body></html>
Para representar una estructura de varios casos se utilizar la sintaxis
siguiente:
<html><body>
<?php
$d=date("D");
if ( $d == "Fri" )
echo "hoy es viernes";
elseif ( $d == "Sun" )
echo "hoy es domingo";
else
echo "hoy no es ni viernes ni domingo";
?>
</body></html>
Al igual que en C, existe la construccin switch, para contemplar
varios casos:
<html><body>
<?php
switch ($x) {
case 1:
echo "Num. 1";
break;
case 2:
echo "Num. 2";
break;
case 3:
echo "Num. 3";

break;
default:
echo "Otro nmero distinto";
}
?>
</body></html>
Bucles
Cuando estamos escribiendo cdigo, de cuando en cuando,
tendremos que ejecutar diferentes porciones de cdigo de forma
repetida. En lugar de replicar varias veces el mismo cdigo, debemos
usar las sentencias de tipo bucle:

while : repite el cuerpo mientras que la condicin sea cierta

do...while : repite el cuerpo mientras que la condicin sea


cierta

for : repite el cuerpo un nmero de veces

foreach : repite el cuerpo para cada elemento que haya en el


array que le pasamos

La construccin while ejecuta iterativamente un bloque de


instrucciones mientras una expresin sea vlida, evaluando la
comprobacin en cada iteracin. Cuando la prueba es vlida, se
ejecuta la instruccin o el bloque de instrucciones delimitado por las
llaves. He aqu un sencillo ejemplo de manejo de esta estructura:
<html><body>
<?php
$i=1;
while ($i<=5) {
echo "Iteracin " . $i . "<br />";
$i++;
}

?>
</body></html>
La construccin do-while es similar, salvo que la condicin se
comprueba al final del bucle, con lo que al menos una vez se ejecuta:
<html><body>
<?php
$i=1;
do {
$i++;
echo "Iteracin " . $i . "<br />";
} while ($i<=5);
?>
</body></html>
La construccin for permite ejecutar repetidamente un conjunto de
instrucciones. A continuacin veremos un ejemplo de esta estructura
para iniciarnos en su manejo:
<html><body>
<?php
for ($i=1; $i<=5; $i++) {
echo " Iteracin " . $i . "<br />";
}
?>
</body></html>
La construccin foreach es similar a la funcin del mismo nombre de
los Shells de Unix. Asocia iterativamente a una variable cada
elemento de la lista. Esta sucesin de valores sirve para parametrizar
la ejecucin del bloque de instruccin. Las intrucciones for y foreach
son equivalentes, aunque segn el contexto, conviene usar uno u otro
tipo de bucle. Por ejemplo, si tenemos que recorrer un array
seguramente nos convenga usar un bucle del tipo foreach. Veamos un
ejemplo en el que se ven claramente las ventajas de usar foreach:

<html><body>
<?php
$x=array("uno","dos","tres");
foreach ($x as $valor){
echo $valor . "<br />";
}
?>
</body></html>
En este ltimo ejemplo, veremos cmo recorrer un array asociativo,
extrayendo las claves de acceso a cada elemento:
<?php
$x=array("uno"=>1,"dos"=>2);
foreach ($x as $clave => $valor) {
echo " $clave= $valor ";
}
?>

6. Funciones en PHP
Un programa es una cosa compleja de realizar y por lo tanto es
importante que est bien estructurado y tambin que sea inteligible
para las personas.
Una forma de facilitar, reducir y dividir el trabajo en programacin, es
escribir aquellos grupos de sentencias una sola vez bajo la forma de
una funcin o procedimiento.
En Matemticas, una funcin es una expresin que permite calcular
una variable dependiente del valor de otras.
En programacin, una funcin es la forma de agrupar una secuencia
de rdenes que hacen una tarea especfica de una aplicacin ms
grande, de forma que ms adelante podamos llamar a la funcin para
ejecutar ese conjunto de rdenes con solo invocar el nombre de la

funcin.
Para identificar ese mdulo o funcin, debemos dar un identificador a
la misma. Es recomendable poner nombres que indiquen claramente
qu es lo que hace la funcin. De esta forma podremos entender ms
fcilmente qu hace el programa.
En PHP podemos usar las funciones que nos ofrece el lenguaje, o
podemos crear otras que necesitemos.
Funciones incluidas en el lenguaje PHP
En la siguiente direccin encontraremos la gua completa de las
funciones incluidas en PHP:
http://www.w3schools.com/PHP/default.asp

Crear una funcin propia. Sintaxis


Como hemos indicado, el cuerpo de una funcin se ejecuta al llamarla
desde cualquier punto del script. La sintaxis de definicin es:
function functionName() {
cdigo a ejecutar;
}
La llamada se realiza escribiendo el nombre dado a la funcin.
Veamos un ejemplo de funcin que saluda cuando se la llama:
<html><body>
<?php
function escribe() {
echo "Hola";
}

echo "Vamos a saludar.";


escribe();
?>
</body></html>

Uso de parmetros
Las funciones normalmente reciben parmetros (actan,
internamente a la funcin, como variables). Los parmetros se
especifican en la cabecera de definicin entre los parntesis.
En los siguientes ejemplos, la funcin recibe parmetros. El ejemplo
de la izquierda recibe un parmetro (nombre) y lo muestra. El ejemplo
de la derecha recibe dos parmetros (nombre y edad) y los muestra:
<html><body>
<?php
function escribe($nombre) {
echo $nombre . " <br />";
}
echo "Me llamo ";
escribe("Juan");
echo "Te llamas ";
escribe("Luisa");
?>
</body></html>

<html><body>
<?php
function escribe($nombre,$edad) {
echo $nombre . " tiene ";
echo $edad . " aos <br />";

}
escribe("Angel","78");
escribe("Pepa","47");
?>
</body></html>
Devolver valores
Las funciones pueden devolver valores usando la sentencia return
<html><body>
<?php
function suma($x,$y) {
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . suma(1,16);
?>
</body></html>

7. Entrada/Salida con ficheros


PHP permite la utilizacin de ficheros almacenados en el servidor.
Veremos las funciones bsicas: abrir (fopen), cerrar (fclose), leer
(fgets) y escribir (fputs). Con stas podremos resolver la mayora de
problemas en los que necesitemos acceder al ficheros.
fopen (archivo, modo): Con esta funcin abrimos un fichero (bien
sea local o una direccin de internet) sobre el que tengamos permisos
para el tipo de acceso que queremos hacer.
La funcin fopen nos devuelve un valor numrico (manejador de
archivo) de tipo entero que nos servir para hacer referencia al

archivo abierto. Con fopen podemos abrir un archivo para lectura (r) o
escritura (w). Tambin podemos abrirlo para lectura y escritura (r+,
a+).
$fichero=fopen("fichero.txt" , "r");
fgets (manejador_archivo, longitud): La funcin fgets nos
devuelve una cadena con la longitud especifica del fichero al que
apunta el manejador de archivo.
<?php
$archivo = fopen("fichero.txt" , "r");
if ($archivo) {
while (!feof($archivo)) {
$linea = fgets($archivo, 255);
echo $linea;
}
}
fclose ($archivo);
?>
La funcin feof devuelve TRUE si el puntero de lectura/escritura se
encuetra al final del fichero, y FALSE en caso contrario.
fputs (manejador_archivo, cadena): La funcin fputs escribe una
cadena en el fichero indicado (previamente abierto). La funcin fputs
devuelve TRUE si se ha escrito con xito, en caso contrario devuelve
FALSE.
<?php
$archivo = fopen("fichero.txt" , "w");
if ($archivo) {
fputs ($archivo, "Hola Mundo");
}
fclose ($archivo);
?>

fclose (manejador_archivo): Con esta funcin cerramos el fichero


que nos marca el manejador de archivo.
file_exists (fichero): Esta funcin devuelve TRUE si el archivo
especificado existe, y FALSE en caso contrario.
<?php
if (file_exists("fichero.txt")) {
echo "El fichero existe";
} else {
echo "El fichero NO existe";
}
?>
A continuacin mostramos un ejemplo completo en el que analizamos
un archivo de texto, buscando una palabra clave en cierto campo de
cada lnea:
$contador=0;
$encontrado=0;
$F = fopen ($fichero, "r");
while ( !feof($F) ) {
$buffer = fgets($F, 4096);
if($buffer){
$partes = explode( "#" , $buffer );
if( $palabra == $partes[4] ) {
$encontrado=1;
echo "lo he encontrado en la lnea $contador \n" ;
}
$contador++;
}
}
fclose($F);

Vous aimerez peut-être aussi