Bases de la sintaxis
Como vimos en la introducción al lenguaje, la inserción de PHP en
HTML se hace mediante etiquetas especiales
<?php .... ?>
Sin embargo, hay varias formas alternativas posibles, aunque casi
siempre veremos la ya comentada:
<? .... ?> Sólo si se activa la función short_tags() o la
bandera de configuración short_open_tag.
<?php .... ?>
<script languaje="php"> .... </script>
<% .... %> Sólo si se activan las etiquetas para ficheros 'asp'
con la bandera de configuración asp_tags.
Al programar debemos separar las diferentes instrucciones con ';'
Es la forma en que le indicamos al lenguaje dónde termina cierta
instrucción.
Habitualmente, para hacer más comprensible (a los humanos) el
código, se suelen incluir comentarios; en PHP se pueden incluir de las
siguientes formas:
podemos comentar varias líneas, quedando comentado todo lo
que aparezca entre /* y */
también podemos comentar sólo una línea, 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 línea es #, que comentará la
línea en la que aparezca pero sólo hasta el tag ?> que cierra el
código php.
2. Variables y tipos de datos
Como se comentó antes en la sección de "Conceptos básicos de
programación", PHP es un lenguaje no-tipificado, lo que quiere decir
que el intérprete de PHP asigna el tipo de una variable según el uso
que se esté haciendo de ella.
Por otro lado, en PHP una variable no necesita estar declarada antes
de darle un valor. Además, PHP convierte automáticamente la
variable al tipo de datos que almacena. En un lenguaje fuertemente
tipificado (C/C++ o Java) debemos indicar el tipo en la declaración,
mientras que en PHP no es necesario, lo que hace que programar
resulte más rápido.
Variables
Una variable en PHP define su tipo según 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 número, el tipo cambiará a entero.
Una cuestión muy importante es que todo nombre de variable debe
estar precedido por el símbolo $
Tipos de datos numéricos
Cuando estamos programando, los datos los iremos guardando en
variables, para poder trabajar con ellos posteriormente.
Las variables de tipo numérico almacenarán datos enteros o reales.
Al trabajar con este tipo de datos podremos asignar valores
constantes a las variables al crearlas. Asimismo, podemos usar
operadores aritméticos para realizar operaciones aritméticas y
lógicas:
<?php
$numero = 3 ;
$contador = 2.5 ;
$suma = $numero + $contador;
echo $suma;
?>
En este programa hemos inicializado dos variables con valores
numéricos, 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 símbolos.
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 carácter 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 programación.
Hay varias funciones de cadena muy utilizadas. Podemos generar la
fecha y hora actuales usando la función 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 carácter, usando la
función explode() para obtener un array en el que cada casilla del
array contendrá una porción de la cadena inicial:
$trocitos = explode( "#" , $cadena );
En la siguiente dirección encontraremos la guía completa de las
funciones de cadenas de PHP:
http://www.w3schools.com/PHP/php_ref_string.asp
Hemos visto las primeras características de PHP. Vamos a detallar
cómo 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
extensión .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 numéricas seguido de un mensaje en cursiva, la fecha y la
hora).
En este ejemplo vemos que se pueden poner tantos bloques de
código PHP como queramos dentro del código HTML (aunque en
muchos ejemplos veamos sólo 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 están
numerados. De esta forma, podríamos acceder al elemento i-ésimo de
la cajonera, y lo que estaremos haciendo es acceder al elemento i-
ésimo 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 añadiendo datos a un array, si no se
especifica el índice del elemento al que queremos acceder, se
entenderá que queremos asiganr el valor añadiendo el dato al final
(como último elemento).
Uno de los usos más comunes al usar un vector de datos es
almacenar elementos que serán 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 automáticamente, 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 continuación veremos cómo 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 idéntico 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'] . " años.";
?>
Arrays Multidimensionales
Podemos trabajar también 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 numéricos 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 más compactas para asignar
automáticamente 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] ;
Guía Completa del manejo de Arrays en PHP
En la siguiente dirección encontraremos la guía 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 función muy utilizada (salvo si estamos
usando arrays muy muy grandes), existe la función unset()para
eliminar la definición de una variable escalar o un array:
<?php
$nombres=array("pepe","juan","luisa","pepa");
unset( $nombres[0] );
unset( $nombres );
?>
4. Expresiones y operadores
Una expresión es una combinación de operadores y operandos que al
ser evaluados generan un valor. Los operandos suelen ser nombres
de variables o constantes, pero también pueden ser funciones (ya
que devuelven un valor). La evaluación de una expresión da lugar a
otro valor (normalmente un número o una cadena de caracteres,
aunque puede ser también un valor lógico, etc).
Las expresiones más simples son las variables y las constantes y
otras más complicadas serán las funciones, puesto que cada función
devuelve un valor al ser invocada, es decir, contiene un valor, por lo
tanto, es una expresión.
Al igual que cuando evaluamos expresiones matemáticas, al
programar las expresiones se evalúan de acuerdo con la precedencia
de los operadores. Ante una secuencia de operadores de igual
precedencia, la evaluación se realiza según el orden de escritura, de
izquierda a derecha. El orden de evaluación puede modificarse
usando paréntesis.
Existen diferentes tipos de operadores: aritméticos, de asignación, de
comparación y lógicos. En realidad, todos los operadores, y la forma
de usarlos es muy similar en todos los lenguajes de programación. 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 aritméticos
Operadores de asignación
Operadores de comparación
Operadores lógicos
Veamos a continuación varios ejemplos del uso de los operadores de
PHP en expresiones aritméticas y de comparación:
5. Estructuras de control
Condicionales
Cuando estamos escribiendo código, de cuando en cuando,
querremos ejecutar diferentes porciones de código en función 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 porción de código si la
condición es verdadera
if...else : se usa para ejecutar una u otra en función de la
condición
if...elseif....else : podemos especificar varios bloques de
código en función de varias condiciones diferentes
switch : con esta otra podemos especificar muchos bloques
diferentes
A continuación mostramos varios ejemplos de las diferentes
construcciones condicionales.
La construcción if es muy parecida a la utilizada en C. La sintaxis de
la instrucción 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 día 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 construcción 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 número distinto";
}
?>
</body></html>
Bucles
Cuando estamos escribiendo código, de cuando en cuando,
tendremos que ejecutar diferentes porciones de código de forma
repetida. En lugar de replicar varias veces el mismo código, debemos
usar las sentencias de tipo bucle:
while : repite el cuerpo mientras que la condición sea cierta
do...while : repite el cuerpo mientras que la condición sea
cierta
for : repite el cuerpo un número de veces
foreach : repite el cuerpo para cada elemento que haya en el
array que le pasamos
La construcción while ejecuta iterativamente un bloque de
instrucciones mientras una expresión sea válida, evaluando la
comprobación en cada iteración. Cuando la prueba es válida, se
ejecuta la instrucción 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 "Iteración " . $i . "<br />";
$i++;
}
?>
</body></html>
La construcción do-while es similar, salvo que la condición se
comprueba al final del bucle, con lo que al menos una vez se ejecuta:
<html><body>
<?php
$i=1;
do {
$i++;
echo "Iteración " . $i . "<br />";
} while ($i<=5);
?>
</body></html>
La construcción for permite ejecutar repetidamente un conjunto de
instrucciones. A continuación veremos un ejemplo de esta estructura
para iniciarnos en su manejo:
<html><body>
<?php
for ($i=1; $i<=5; $i++) {
echo " Iteración " . $i . "<br />";
}
?>
</body></html>
La construcción foreach es similar a la función del mismo nombre de
los Shells de Unix. Asocia iterativamente a una variable cada
elemento de la lista. Esta sucesión de valores sirve para parametrizar
la ejecución del bloque de instrucción. Las intrucciones for y foreach
son equivalentes, aunque según 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 cómo 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 también que sea inteligible
para las personas.
Una forma de facilitar, reducir y dividir el trabajo en programación, es
escribir aquellos grupos de sentencias una sola vez bajo la forma de
una función o procedimiento.
En Matemáticas, una función es una expresión que permite calcular
una variable dependiente del valor de otras.
En programación, una función es la forma de agrupar una secuencia
de órdenes que hacen una tarea específica de una aplicación más
grande, de forma que más adelante podamos llamar a la función para
ejecutar ese conjunto de órdenes con solo invocar el nombre de la
función.
Para identificar ese módulo o función, debemos dar un identificador a
la misma. Es recomendable poner nombres que indiquen claramente
qué es lo que hace la función. De esta forma podremos entender más
fácilmente 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 dirección encontraremos la guía completa de las
funciones incluidas en PHP:
http://www.w3schools.com/PHP/default.asp
Crear una función propia. Sintaxis
Como hemos indicado, el cuerpo de una función se ejecuta al llamarla
desde cualquier punto del script. La sintaxis de definición es:
function functionName() {
código a ejecutar;
}
La llamada se realiza escribiendo el nombre dado a la función.
Veamos un ejemplo de función que saluda cuando se la llama:
<html><body>
<?php
function escribe() {
echo "Hola";
}
echo "Vamos a saludar.";
escribe();
?>
</body></html>
Uso de parámetros
Las funciones normalmente reciben parámetros (actúan,
internamente a la función, como variables). Los parámetros se
especifican en la cabecera de definición entre los paréntesis.
En los siguientes ejemplos, la función recibe parámetros. El ejemplo
de la izquierda recibe un parámetro (nombre) y lo muestra. El
ejemplo de la derecha recibe dos parámetros (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 . " años <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 utilización de ficheros almacenados en el servidor.
Veremos las funciones básicas: abrir (fopen), cerrar (fclose), leer
(fgets) y escribir (fputs). Con éstas podremos resolver la mayoría de
problemas en los que necesitemos acceder al ficheros.
fopen (archivo, modo): Con esta función abrimos un fichero (bien
sea local o una dirección de internet) sobre el que tengamos permisos
para el tipo de acceso que queremos hacer.
La función fopen nos devuelve un valor numérico (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). También podemos abrirlo para lectura y escritura (r+,
a+).
$fichero=fopen("fichero.txt" , "r");
fgets (manejador_archivo, longitud): La función 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 función 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 función fputs escribe una
cadena en el fichero indicado (previamente abierto). La función 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 función cerramos el fichero
que nos marca el manejador de archivo.
file_exists (fichero): Esta función 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 continuación mostramos un ejemplo completo en el que analizamos
un archivo de texto, buscando una palabra clave en cierto campo de
cada línea:
$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 línea $contador \n" ;
}
$contador++;
}
}
fclose($F);
Top Related