UNIDAD II - ELEMENTOS DEL LENGUAJE


Sintaxis Básica



Abrir Scripts PHP

      El código PHP está incrustado entre medio del código HTML. Por tanto debemos indicar de alguna forma que dejamos de escribir en código HTML y empezamos a escribir en código PHP. También debemos indicar dónde acaba el código PHP y volvemos a escribir en código HTML. Esto se hace indicándolo mediante unas etiquetas especiales que indican dónde empieza y acaba el código PHP.

     la etiqueta <?php indicará que empezamos a escribir en PHP, y la etiqueta ?> indica que acaba el código PHP.

<?php .... codigo php ... ?>

     También podemos indicar que estamos escribiendo en PHP mediante la etiqueta:

<script language="php">.... codigo php ... </script>

     Hay otras etiquetas para delimitar el código PHP, pero no funcionan bien con todas las versiones de "Apache" o de "XAMPP". estas son:

<? .... codigo php ... ?>

<% .... codigo php ... %>

     Nosotros utilizaremos siempre la primera etiqueta, de esta forma garantizamos que funcionará con cualquier versión de Apache o de PHP. Ya que aunque funcionen bien las otras etiquetas en el servidor local, puede que no sea así cuando subamos la página a Internet (servidor remoto).



Escribir en la página con PHP

     La instrucción echo es una de las más utilizadas en PHP, ya que nos permite visualizar en pantalla lo que escribamos detrás de esta palabra clave. Si lo que queremos visualizar es un texto, debemos escribirlo entre comillas. de la siguiente manera:

<?php 
echo "Hola mundo"; 
?>

     Lo escrito dentro de la instrucción echo entre comillas, es interpretado por el navegador como código HTML, por lo que podemos poner etiquetas HTML dentro del texto entre comillas para integrar mejor este texto en la página:

<?php 
echo "<p>Hola mundo</p>"; 
?>

     La instrucción print es en todo igual a la instruccion echo pudiendo usar una u otra indistintamente para obtener el mismo resultado:

<?php 
print "<p>Hola mundo</p>"; 
?>

     Esta instrucción o sentencia es en todo idéntica a la anterior, y tiene el mismo efecto en la página.



Escribir instrucciones

     Al igual que en javascript, podemos escribir las instrucciones con varios espacios en blanco entre palabras, y con tabulaciones. Estos no serán tomados en cuenta al interpretar el código, y se considera que sólo hay un espacio en blanco entre palabras aunque haya más de uno. Esto nos permite organizar el código para que pueda ser más inteligible.

     Sin embargo todas las instrucciones o sentencias PHP deben acabar con el signo de punto y coma ( ; ). El cambio de línea al escribir el código no supone un cambio de instrucción, por lo que si no se pone el signo de punto y coma seguiremos en la misma instrucción al cambiar de línea. Esto supone una diferencia importante con Javascript, ya que en Javascript al cambiar de línea acabamos la instrucción para empezar otra. En PHP el punto y coma es obligatorio al final de cada sentencia.



Primera página

Con lo visto hasta ahora podemos ya crear una primera página sencilla con lenguaje PHP. para ello abriremos el programa editor de textos (HTML-Kit) y escribiremos lo siguiente:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html> 
<head> 
<title>Página con PHP</title> 
</head> 
<body> 
<p>Este texto no esta escrito en PHP</p> 
<?php 
 echo "<p>Este texto está escrito con PHP</p>"; 
?> 
</body> 
</html> 


     En esta página el código PHP está marcado en azul. Para ver como funciona esta página la copiamos en nuestro editor de textos, y la guardamos en la carpeta "htdocs" del directorio de XAMPP con el nombre prueba1.php.

   Para verla abrimos el navegador y escribimos en la barra de navegación: localhost/prueba1.php. En el navegador debemos ver las dos líneas de texto tanto la escrita fuera de PHP como la escrita dentro de PHP.

     Si examinamos el código fuente de la página (en la mayoría de los navegadores barra superior: ver/código fuente) veremos que sólo hay texto en HTML. Si en lugar de abrir la página desde localhost/... la abrimos directamente con el navegador, sólo veremos el código escrito directamente en HTML, y el código en PHP será ignorado.



La carpeta htdocs

    Este será nuestro directorio de trabajo. Dentro de esta carpeta puedes crear subcarpetas para organizar mejor todos nuestros archivos en PHP. Para verlos en el navegador debemos escribir en la barra de navegacion "localhost/misubcarpeta/archivo.php". Dentro de cada subcarpeta podemos guardar pruebas, proyectos de sitios, carpetas raiz de sitios en php, etc. Cada subcarpeta puede tener un archivo principal al que llamaremos "index.php" y que será el que se abra por defecto al poner sólo el nombre de la subcarpeta.

     Tal vez nos resulte más cómodo acceder a la carpeta "htdocs" desde la carpeta de "mis documentos" o desde otra que nos sea más familiar. Para ello no tenemos más que crear en "mis documentos" (o en la carpeta que queramos) un acceso directo a la carpeta "htdocs".

Para escribir los nombres de los archivos debemos seguir las mismas reglas descritas para los archivos en HTML. Recordemos que éstos son básicamente los siguientes:

  • Texto en minúsculas: Todo el texto del nombre de archivo se escribirá en minúsculas.
  • No poner acentos: Escribiremos todas las palabras sin acento, aunque los tengan.
  • No empezar por un número: El primer carácter o signo que escribamos no debe ser un número, pues algunos programas podrían interpretar mal el nombre del archivo
  • No utilizar otros caracteres que no sean letras o números: no utilizar barras, paréntesis, puntos, dos puntos, comas, comillas, signo más, etc.
  • Separar las palabras con guión normal - o con guión bajo _ : Esto nos asegura un sólo espacio entre palabras, el ocupado por el guión bajo (El guión bajo ( _ ) se escribe pulsando la tecla Mayúsculas y la tecla Guión a la vez).



Variables

Definición de variable.

     Una variable es un elemento en el que se puede almacenar un valor o dato. Para ello basta con asignarle a una variable un valor. Si a esa misma variable le asignamos otro valor, esta cambiará el valor o dato que tenga almacenado por el que le demos de nuevo.

     Si conoces Javascript o cualquier otro lenguaje de progamación, estarás ya familiarizado con este término. Si no es así verás que esto es muy facil.

    En PHP todas las variables van precedidas del signo dolar $. este signo delante de cualquier texto indica que lo que viene detrás es una variable: ejemplo: $miVariable

Asignar valor a una variable

     Para crear una variable basta con escribirla (siempre precedida del signo $). Por lo tanto si escribimos cualquier palabra precedida del signo $ esta será considerada como una variable.

     Sin embargo las variables tienen su utilidad en que pueden guardar valores, datos, u otros elementos; por tanto al crearlas es conveniente asignarles un valor o dato. Ello se hace mediante el signo = (igual).

$texto = "Hola mundo";

     en esta instrucción PHP hemos creado una variable llamada $texto. A partir de aquí, escribir el nombre de la variable es lo mismo que escribir su valor o dato almacenado. por tanto, siguiendo el ejemplo anterior, la instruccion:

echo $texto;

     nos dará el mismo resultado que si escribimos:

echo "Hola mundo";

     Es más, si escribimos el nombre de una variable dentro de una cadena de texto, no veremos el nombre de la variable, sino su valor. por tanto si escribimos , siguiendo con el ejemplo anterior, el texto

echo "Bienvenido a mi página, $texto";

nos dará el siguiente resultado en la página:

Bienvenido a mi página, Hola mundo 



Tipos de variables

     Las variables pueden ser de diferentes tipos en función del valor que almacenan. los tipos de variables son:

Números enteros (integer)

     Números enteros sin decimales. Ejemplo:

$num1 = 43

Números Reales (real)

     Números reales, con decimales. Ejemplo:

$num2 = 12.56

Cadenas de texto (string)

     Texto escrito con caracteres alfamuméricos. Van siempre delimitadas por comillas al principio y al final de la cadena. Ejemplo:

$texto = "Esta variable es un texto."

Arrays o listas de elementos.

     un array es un conjunto de elementos que están agrupados bajo una única variable, y forman una lista. Si conoces el lenguaje Javascript ya sabrás lo que son los arrays. La forma de trabajar con los arrays en PHP es similar a Javascript, aunque no es idéntica. Veremos más adelante como trabajar con arrays en PHP. Aunque más adelante se explicará con más detalle, este es un ejemplo de como crear un Array

$array = array("primavera","verano","otoño","invierno");

Objetos

     Las variables pueden guardar también otros elementos más complejos que pueden crearse con el lenguaje PHP. Estos son los objetos. Los veremos en temas posteriores.

Comentarios

     Lo comentarios son anotaciones que hace el programador al margen del código. No forman parte del código, pero ayudan a entender lo que se está haciendo. Su sintaxis es la misma que en javascript. Tenemos dos tipos de comentarios: los de una línea y los de varias líneas.

     Los comentarios de una línea empiezan con dos barras inclinadas: //. Todo lo que se ponga en la línea después de las dos barras inclinadas será el comentario:

$a = "hola"; //definir la variable a

     Después de la instrucción hemos puesto un comentario de una línea para indicar lo que estamos haciendo.

    Los comentarios de varias líneas empiezan por /* y terminan por */. todo lo que escribamos entre estos signos será un comentario:

/*página de inicio
Creada por Samuel.*/

     La mayoría de editores de texto para páginas web (como HTML-Kit) suelen resaltar los comentarios en letra cursiva y de otro color. De esta manera se distingue enseguida lo que es un comentario del código en sí.



Trabajar con variables

Cambiar el tipo de variable

Mediante la instrucción: setType()

     Las variables cambian automáticamente de tipo al asignarles un nuevo valor de otro tipo. No obstante también podemos forzar a una variable a cambiar de tipo sin cambiarle el valor. Para ello utilizaremos la función

setType($variable,"nuevo_tipo");

     En "nuevo_tipo" podemos escribir las siguientes palabras "integer" (entero), "double" (numero real), "string" (cadena de texto), "array" (array), "object" (objeto). Veamos un ejemplo:

<?php 
$variable = "23 años"; 
echo "esto es una variable: $variable<br/>"; 
setType($variable,"integer"); 
echo "La variable anterior convertida a entero: $variable"; 
?> 




Indicando el tipo de variable a cambiar

     También podemos cambiar el tipo de variable de la siguiente manera:

$variable = (tipo_variable) $variable;

     Igualamos la variable a sí misma pero delante de ella, entre paréntesis ponemos el tipo de variable en la que se convierte.

     Aquí en "tipo_variable" podemos escribir:
  • (int), (integer) : Convertir a entero.
  • (real), (double), (float) : convertir a número real.
  • (string): Convertir a cadena de texto.
  • (array) : Convertir a array.
  • (object) : Convertir a objeto.

     Por lo tanto el ejemplo anterior podemos escribirlo también de la siguiente manera y el resultado será el mismo:

<?php $variable = "34 años"; 
echo "esto es una variable: $variable<br/>"; 
$variable = (int) $variable; 
echo "La variable anterior convertida a entero: $variable"; 
?> 



Caracteres de escape

     Al igual que en HTML o Javascript y otros lenguajes de programación, existen una serie de caracteres que se utilizan para la propia programación, y que no pueden escribirse directamente para que se vean en la pantalla del ordenador, ya que serán interpretados como una instrucción y no como lo que hay que escribir.

     Por ejemplo, si en una cadena de texto queremos escribir el signo $ no podemos escribirlo directamente, ya que el programa PHP interpretará que queremos escribir una variable, por tanto debemos indicar de alguna manera que lo que escribimos no es una variable, sino el signo $.

     La manera de indicarlo es escribir delante del signo la barra inclinada inversa ( \ ). Para escribirla debemos pulsarla tecla " � " (esquina superior izquierda del teclado) a la vez que la tecla "AltGr". Veamos un ejemplo :

$texto = "Esto es una variable";
echo "la variable \$texto tiene el valor: $texto";

     Este código php lo veremos en el navegador de la siguiente manera:

la variable $texto tiene el valor: Esto es una variable

     Los caracteres de escape no sólo sirven para imprimir los caracteres usados por PHP, sino que permiten además hacer otro tipo de acciones. Estas son tabulaciones o saltos de línea. Estas acciones se producen unicamente en el código fuente. Es decir, el lenguaje PHP es traducido a lenguaje HTML por el servidor; es en este lenguaje HTML donde se producen las tabulaciones o saltos de línea indicados por los caracteres de escape.

Los caracteres de escape más comunes son:
  • \n : nueva línea.
  • \t : tabulación.
  • \\ : barra invertida.
  • \$ : signo dólar.
  • \" : comillas dobles.
  • \' : comillas simples.
  • \& : signo ampersand.
  • \? : signo de interrogación.

     Hay más caracteres de escape, pero estos son los más utilizados. Respecto al caracter de escape \n señalar que la nueva línea se produce unicamente en el código fuente que se manda al navegador, y que podemos ver desde la barra superior en ver/codigo fuente. Para provocar un salto de línea en el texto visible de la página utilizaremos la instruccion echo "<br/>".



Variables y constantes


Concatenar variables

     Consiste en hacer que el valor de una variable se convierta en el nombre de otra variable, para ello concatemamos los signos dolar. Es decir si tenemos la variable $v1, podemos crear la variable $$v1. El nombre de esta variable será el valor que le hayamos dado a la variable $v1.

     Vamos a verlo con un ejemplo. Tenemos la variable $v1 = "tema1". Este es su código php:

<?php $v1 = "tema1"; echo $v1; ?>

     Y la veremos así:
tema1


     Ahora creamos la variable $$v1 = "contenido del tema 1". Para ver el valor de esta variable debemos escribir en el código: $tema1, es decir, el valor de la variable de referencia. Veamos el código:

<?php $$v1 = "contenido del tema 1"; echo $tema1; ?>

     El código anterior dará el siguiente resultado:


contenido del tema 1


     Si damos la instrucción echo $$v1 obtendremos el mismo resultado: código:

<?php echo $$v1 ?>

     El resultado sera:


contenido del tema 1


Variables vinculadas

     Podemos hacer una copia de una variable de forma que dos variables tengan el mismo valor. Para ello basta con igualar la segunda variable a la primera:

<?php $v1="primera"; $v2=$v1 ?>

     La variable $v2 tendrá el mismo valor que la variable $v1; lo cual lo comprobamos con el siguiente código:

<?php echo "Valor de la variable \$v1: $v1.<br/>";
echo "Valor de la variable \$v2: $v2.<br/>"; ?>

     El código PHP nos dará el siguiente resultado:

Valor de la variable $v1: primera.
Valor de la variable $v2: primera.


     Si ahora cambiamos el valor de la primera variable, la segunda variable seguirá teniendo el valor antiguo: El código será:

<?php $v1="segundo";
echo "Valor de la variable \$v1: $v1.<br/>";
echo "Valor de la variable \$v2: $v2.<br/>"; ?>

     Y nos dará en el navegador el siguiente resultado:

Valor de la variable $v1: segundo.
Valor de la variable $v2: primera.


     Vemos que al cambiar la primera variable, la segunda conserva el valor antiguo. Esto puede sernos útil en algunas ocasiones, sin embargo en otras querremos que al cambiar el valor de la primera variable, cambie el valor de la segunda, es decir, que estén vinculadas. Para ello al igualarlas pondremos el signo ampersand (&) delante de la segunda variable: Veamoslo en otro ejemplo:

<?php $w1="primavera"; $w2=&$w1 ?>

     Comprobamos el valor de las variables: este es el código:

<?php echo "Valor de la variable \$w1: $w1.<br/>";
echo "Valor de la variable \$w2: $w2.<br/>"; ?>

     el cual nos dará el siguiente resultado:

Valor de la variable $w1: primavera.
Valor de la variable $w2: primavera.


     Cambiamos el valor de la variable $w1 y comprobamos el resultado en las dos variables. El código es el siguiente:

<?php $w1="verano";
echo "Valor de la variable \$w1: $w1.<br/>";
echo "Valor de la variable \$w2: $w2.<br/>"; ?>

     Y nos dará en el navegador el siguiente resultado:

Valor de la variable $w1: verano.
Valor de la variable $w2: verano.


     Vemos que al cambiar el valor de la primera variable, se ha cambiado también el valor de la segunda. Si cambiamos el valor de la segunda variable, también cambiará el valor de la primera, ya que las dos variables comparten en la memoria el mismo espacio para el valor.



Constantes



Qué son las constantes

     Las constantes son elementos parecidos a las variables, pero con la diferencia de que una vez que las hemos definido no podemos variar su valor dentro de la página. Las constantes, al contrario de las variables, se expresan sin el signo dolar ($), sin embargo su definición es un poco más complicada.


Definir una constante

     Para definir una constante debemos emplear una función predeterminada de PHP, la funcion define:

define("nombre","valor")

     Veamos un ejemplo, el siguiente código:

define("primera","Primera constante"); echo primera;

     lo veremos de la siguiente manera en el navegador:

Primera constante

     Como valor le podemos pasar un texto o también una variable.

     Una vez definida una constante no la podemos variar, a no ser que la volvamos a definir otra vez. por tanto no podemos asignarle otro valor, aunque sí trabajar con él.



Comprobar una constante.

     A veces podemos tener problemas para acceder a una constante, sobre todo si su nombre coincide con el nombre de alguna función o algún otro elemento. Para acceder a la constante de forma fiable emplearemos la función constant("nombre"). Código de ejemplo:

define("define","define del verbo definir.");
echo constant("define");

     Este ejemplo nos dará el siguiente resultado:

define del verbo definir. 





Operadores


Operadores aritméticos


     Los operadores, como su nombre indica, nos permiten hacer operaciones con las variables, modificarlas, sumar, restar, combrobar si son iguales o distintas, etc. si has seguido el curso de javascript, o conoces algo de programación en algún otro lenguaje, ya sabrás lo que son los operadores. Si no es así puedes ver aquí cuáles son y como funcionan. De todas formas siempre hay algunas cosas que cambian de unos lenguajes de programación a otros, por lo que conviene mirar este tema para saber cuáles son.

    Los operadores aritméticos nos permiten hacer operaciones aritméticas con las variables, estas deben ser de tipo "numero" aunque algunas operaciones pueden hacerse también con variables de tipo "texto".



operador de asignación (=)

     El operador más simple es el operador de asignación, el cual ya lo hemos visto, consta del signo igual = y sirve para asignar o cambiar el valor de una variable.


operador punto (.)

     El operador punto (se escribe como un punto "." ). Concatena dos o más variables. Se usa preferentemente con las variables de texto, aunque puede usarse con cualquier variable, incluso entre variables y textos entrecomillados.

     Los números los trata como si fuesen textos, poniendo unos a continuación de otros. Ejemplo


<?php $a="Hola "; 
 $b="mundo."; 
 echo $a.$b; 
 ?>

El código anterior dará el siguiente resultado en pantalla:

Hola mundo. 


Operadores aritméticos clásicos

     Los operadores aritméticos clásicos son la suma + , la resta - , la multiplicación * y la división / . A estos hay que añadir el operador módulo % cuyo resultado es el resto de la división entre números enteros y su signo es el del porcentaje (%). Operamos normalmente guardando el resultado en otra variable:

$num3=$num1+$num2;

     En el siguiente script calculamos el resultado de estos operadores para dos números:

<?php 
$a=5; $b=3; 
echo "primer número $a. Segundo número $b.<br/>"; 
$c=$a+$b; echo "$a + $b = $c <br/>"; 
$c=$a-$b; echo "$a - $b = $c <br/>"; 
$c=$a*$b; echo "$a * $b = $c <br/>"; 
$c=$a/$b;  echo "$a / $b = $c <br/>"; 
$c=$a%$b; echo "$a % $b = $c <br/>"; 
?> 


     El resultado en pantalla del script anterior será el siguiente:

primer número 5. Segundo número 3.
5 + 3 = 8 
5 - 3 = 2 
5 * 3 = 15 
5 / 3 = 1.6666666666667 
5 % 3 = 2 



Operadores de incremento

     Los operadores de incremento, aumentan o disminuyen en un número entero el valor de la variable a la que afectan.

   Existe un operador de incremento ++ y un operador de decremento -- los cuales aumentan o disminuyen respectivamente en una unidad el valor de la variable a la que se aplican.

     por ejemplo si tenemos la variable $n=5 y le aplicamos el operador de incremento:

++$n;

     El valor de $n ahora será 6.

     Pero si después le aplicamos el operador de decremento:

--$n;

     El valor de $n volverá a ser 5.

     Estos operadores podemos ponerlos antes o después de la variable, es decir podemos poner ++$n o $n++. El resultado puede ser distinto ya que si está unido a otra operación, al ponerlo delante primero se incrementa y luego se opera, mientras que si se pone detrás primero se opera, y luego se incrementa. tal como ocurre en el siguiente script:

<?php 
 $n=5; 
echo "variable \$n=5.<br/>"; 
echo "\$n++ * 2 = ".$n++ * 2; 
echo "<br/>ahora \$n = $n<br/>"; 
$n=5;echo "Igualamos de nuevo \$n=5 <br/>"; 
echo "++\$n * 2 = ".++$n *2; 
echo "<br/>ahora \$n = $n"; 
?> 


     El resultado del script nos dará en pantalla lo siguiente, con lo que comprobamos que el resultado puede ser distinto si ponemos el incremento antes o después de la variable:

variable $n=5.
$n++ * 2 = 10
ahora $n = 6
Igualamos de nuevo $n=5 
++$n * 2 = 12
ahora $n = 6 


Operadores de asignación compuestos

     Los operadores de asignación compuestos constan siempre de dos partes, la primera indica una operación aritmética, y la segunda es el signo igual (=). Se realiza la operación indicada con las dos variables y el valor resultante se aplica a la primera variable. Por ejemplo si tenemos las variables $a=5 y $b=3 le aplicamos el operador "suma y asignación":

$a+=$b;

     El resultado será igual que si hubieramos escrito:

$a=$a+$b;

     Es decir, tras realizar la suma, el valor de la primera variable toma el valor de la suma. El resultado en este caso es que $a será igual a 8. La variable $b sigue conservando su valor inicial.

     Al igual que con la suma podemos realizar la operación con la resta, la multiplicación, la división, y el operador módulo (resto de la división), y también el operador .= que puede emplearse también para añadir más texto a variables de cadena de texto.

     La lista de los operadores de asignación compuestos es la siguiente:

  • $a+=$b : suma de $a y $b y el resultado cambia el valor de $a
  • $a-=$b : resta de $a y $b y el resultado cambia el valor de $a
  • $a*=$b : multiplicación de $a y $b y el resultado cambia el valor de $a
  • $a/=$b : división de $a y $b y el resultado cambia el valor de $a
  • $a%=$b : módulo de $a y $b y el resultado cambia el valor de $a
  • $a.=$b : concatenación de $a y $b y el resultado cambia el valor de $a

     En las expresiones con la palabra clave echo no hace falta que el segundo término de la operación sea una variable, puede ser un número directamente , o un texto si se utiliza el operador . Ejemplos:

echo $a+=10;
echo $b.="�";

     En el primer caso la variable $a incrementará su valor en 10 unidades. en el segundo la variable $b se convertirá en una variable de texto en la que indicará el número que tenía seguida de la espresión "�".



Operadores condicionales


     Los operadores condicionales indican si se cumple o no una condición. El resultado de la operación sólo puede admitir dos valores: Una cadena vacía (falso) si no se cumple, o el número 1 si se cumple (verdadero).

     Estos operadores son parte fundamental de las estructuras condicionales, que veremos más adelante, y que permiten que el programa elija entre dos opciones dependiendo de si la condición indicada se cumple o no.

Lista de operadores condicionales

Los operadores condicionales son los siguientes:

  • == : igualdad. Este operador compara dos variables, y devuelve el valor 1 en el caso de que las dos sean iguales. No confundir con el operador de asignación (=); el cual asigna a la primera variable el valor de la segunda.
  • > : mayor que. Compara las dos variables y devuelve 1 si el valor de la primera es mayor que el de la segunda.
  • < : menor que. Compara las dos variables y devuelve 1 si el valor de la primera es menor que el de la segunda.
  • >= : mayor o igual que. Compara las dos variables y devuelve 1 si el valor de la primera es mayor o igual que el de la segunda.
  • <= : menor o igual que. Compara las dos variables y devuelve 1 si el valor de la primera es menor o igual que el de la segunda.

     Por ejemplo si tenemos las siguientes variables:

$a=4;$b=7

     Aplicamos el operador menor que y guardamos el resultado en otra variable:

$c = ($a<$b):

     El valor de $c será 1 pues la condición se cumple.

  Los operadores condicionales como ya se ha indicado se utilizan sobre todo en estructuras condicionales que permiten elegir entre dos o más opciones. En estas estructuras dependiendo de si la condición se cumple o no se aplicará un código u otro.

Operadores lógicos

     Los operadores lógicos se emplean en combinación con los operadores condicionales y permiten comprobar si se cumplen o no varias condiciones al mismo tiempo. Su resultado es también verdadero o falso, es decir una cadena vacia "" si las condiciónes no se cumplen o el número 1 cuando éstas se cumplen.

     Por ejemplo, queremos comprobar si un una variable numérica es mayor que 50 y menor que 100, deben cumplirse dos condiciones al mismo tiempo, que el número sea mayor que 50$n>50 y que también sea menor que 100 $n<100. En este caso utilizaremos el operador lógico and:

$resultado=$n>50 and $n<100;

     La variable $resultado es la que nos dirá si la combinación de las dos condiciones anteriores resulta verdadera o falsa (1 -verdadero- "" -falso-).

      Otras veces querremos comprobar si se cumple una de las dos condiciones dadas, por ejemplo, si un número tiene tres cifras o más, tanto si es positivo como negativo, por lo que miraremos que el número sea mayor de 99 $n>99 o que el número sea menor de -99 $n<-99. En este caso utilizaremos el operador or.

$resultado=$n>99 or $n<-99:

      Como en el caso anterior el resultado será 1 (verdadero) o "" (falso).


lista de operadores lógicos

    
     Los operadores lógicos que podemos usar son los siguientes:

  • and : Deben cumplirse las dos condiciones para que su valor sea verdadero.
  • or : Deben cumplirse al menos una condición para que su valor sea verdadero. Sólo en el caso de que no se cumpla ninguna de las dos el valor será falso.
  • xor : Debe cumplirse sólo una condición para que su valor sea verdadero. Si no se cumple ninguna, o si se cumplen las dos a la vez, el valor será falso.
  • && : igual que el operador and.
  • || : igual que el operador or
  • ! : Se usa con una sola condición, y cambia su valor. Si su valor es verdadero lo cambia a falso y viceversa. es como si pusieramos un "no" delante de la condición a la que afecta.

     En temas posteriores veremos cuál es la verdadera utilidad de los operadores condicionales y lógicos, ya que en ciertas estructuras llamadas condicionales, dependiendo del resultado que nos de el operador, la página seguirá unas instrucciones u otras.



Arrays

Arrays indexados


     Un array es una variable en la que podemos guardar varios datos o variables agrupados a la vez. Estos forman una lista, la cual tiene un único nombre. Por ejemplo podemos guardar en un array llamado $semana los días de la semana, o en $meses los nombres de los meses del año, o en $clientes los nombres de los clientes habituales de un negocio.

   En otros manuales podemos encontrarlos con el nombre de "vectores", "listas", "matrices", "arreglos" o "tablas". Nosotros hemos preferido llamarlos por su nombre en inglés, que es el que se usa para crearlos, "arrays". Conservamos así su nombre original, para no confundirlos con otro tipo de estructuras.

     Si has visto el curso de javascript, sin duda, ya sabrás lo que son los arrays; aunque en PHP siguen la misma estructura, su forma es un poco diferente.

   Una diferencia con javascript es que en PHP los arrays pueden ser indexados o asociativos, mientras que en javascript todos son indexados. Empezaremos por estos últimos.


definir un array

     La forma más simple de definir un array es mediante la instrucción array(). Dentro del paréntesis escribimos los valores o variables que contiene el array, separados por comas:

$temporadas=array("primavera", "verano", "otoño", "invierno");

    Dentro del array podemos poner todo tipo de datos, tanto cadenas de texto, como números enteros o decimales, o booleanos, o poner variables que contengan esos datos, El siguiente array mezcla todo tipo de datos:

$miarray=array("Juan",,32,17.5,true);



Leer un array

     Los arrays anteriores son arrays indexados, es decir, a cada elemento del array le corresponde un número, el cual se utilizará para poder leerlo. Se empieza a contar desde el número 0, por lo que el primer elemento del array será el número 0. Al último elemento de un array de n elementos le corresponderá el número n-1. Es decir en el array $temporadas del ejemplo anterior, al elemento "primavera" le corresponde el número 0, a "verano" le corresponde el 1, a "otoño" el 2 y a "invierno" el 3.

      para leer cada elemento usaremos el siguiente código: $nombreArray[num_elemento]. Así para leer los elementos del array anterior escribiremos:

echo "$temporada[0], $temporada[1], $temporada[2], $temporada[3].";

      Fíjate que el número de elemento debe ponerse entre corchetes [ ], mientras que en la definición mediante la palabra clave "array" hemos usado paréntesis ( ).

    Si haces la prueba de escribir el array anterior en una página, y sacarlo luego en pantalla, el resultado será el siguiente:

primavera, verano, otoño, invierno.

     más adelante veremos otros métodos más eficaces para mostrar todos los elementos de un array, así como para buscar algún elemento en concreto y otras operaciones con arrays.



Definir un array por sus elementos

     También podemos definir un array definiendo directamente sus elementos, por ejemplo si escribimos:

$turnos[0]="mañana";
$turnos[1]="tarde";
$turnos[2]="noche";

      Es lo mismo que si hubieramos escrito:

$turnos= array("mañana","tarde","noche");

   Esta forma de definir arrays simplemente definiendo sus elementos plantea algunos problemas: por ejemplo, ¿qué pasa si al definir un elemento no hemos definido los anteriores?. Pues simplemente que los anteriores no existen. El número de elementos, es el que tiene, sin embargo para leer el elemento deberemos usar el número que le hemos dado, y no el que le correspondería por su orden.

     Por ejemplo, si escribimos :

$a[5]="hola";

     Creamos un array de un solo elemento, sin embargo para leerlo debemos escribir echo "$a[5]";, con el número 5, aunque sea el primer elemento del array.



Redefinir elementos

     Para darle otro valor a un elemento de un array basta con definirlo de nuevo, tal como hemos hecho en la sección anterior. Así si en el array $temporada visto anteriormente queremos poner el primer elemento en letras mayúsculas, lo redefineremos de la siguiente manera:

$temporada[0]="PRIMAVERA";

      Después de hacer el cambio, lo volvemos a sacar en pantalla mediante la sentencia:

echo "$temporada[0], $temporada[1], $temporada[2], $temporada[3].";

     y veremos el siguente resultado

PRIMAVERA, verano, otoño, invierno.

El valor del primer elemento de este array ha cambiado.


Contar los elementos de un array

   Para contar los elementos que contiene un array utilizaremos la instrucción count($miarray), donde $miarray es la variable que contiene el array. Para contar los elementos del array $temporada visto anteriormente utilizaremos el siguiente código:

$num=count($temporada);
echo "El array \$temporada tiene $num elementos.";

     Al aplicar el código anterior veremos el siguiente resultado:

el array $temporada tiene 4 elementos.

     Podemos usar también la funcion sizeof($array) para contar los elementos de un array. La forma de usarla es idéntica a la función count(), y el resultado es el mismo.



Arrays asociativos


Valores y claves

     En un array asociativo cada elemento del array se compone de un valor y una clave. Es decir, si los comparamos con los arrays indexados, el valor será el elemento en sí, mientras que la clave será el índice con el que llamamos al elemento.

     Es decir en un array indexado escribimos el valor del elemento, y para leerlo debémos escribir la variable -nombre- del array, y su índice entre corchetes: $miarray[0]. mientras que en un array asociativo al definir cada elemento, lo asociamos a una clave, de manera que para leer el elemento debemos dar el nombre de la clave:$miarray["clave"].



Definir arrays asociativos

     Para definir una array asociativo debemos definir para cada elemento tanto su valor como su clave. Para ello utilizaremos el siguiente código:

$miarray=array("clave1"=>"valor1","clave2"=>"valor2", ... ,"claveN"=>"valorN");

     Es decir para crear el array definimos cada elememento, el cual se compone de dos partes, una la clave, y otra el valor, escribimos el elemento de la siguiente manera "clave"=>"valor".

     Veamos un ejemplo de aray asociativo.

$cap=array("España"=>"Madrid", "Francia"=>"París", "Inglaterra"=>"Londres", "Italia"=>"Roma", "Portugal"=>"Lisboa", "Alemania"=>"Berlín");

     En este array los datos o valores guardados son algunas capitales europeas, mientras que la clave para acceder a ellas son los paises a los que pertenecen.



Leer elementos en arrays asociativos.

      Para acceder o poder leer un elemento de un array asociativo, debemos saber su clave, la cual la escribiremos entre corchetes después de la variable que lo contiene:

echo $cap[Francia];

     El código anterior, continuando con el ejemplo, nos mostrará en pantalla el valor del elemento , es decir "París".

      Observa que la clave la hemos escrito sin comillas dentro del corchete. En este caso es indiferente escribir las comillas o no, sin embargo si la variable la escribimos dentro de una frase entrecomillada, la pondremos sin comillas. Es decir podemos escribir:

echo "La capital de Italia es $cap[Italia].";

     O tambien;

echo "La capital de Italia es ".$cap["Italia"].".";

     En ambos casos el resultado es el mismo:

La capital de Italia es Roma.


     Recorer los elementos de un array asociativo.

     Sin embargo no siempre conocemos la clave del elemento, o simplemente queremos ver qué elementos contiene el array, y cuáles son sus claves.

    La funcion each() crea una variable que nos indica el nombre y el valor de los elementos. Esta variable es a su vez otro array que contiene la clave y el valor del elemento.

    En principio obtendremos la clave y el valor del primer elemento, pero la función tiene también un puntero interno, que cada vez que se usa avanza una posición; de modo que si la volvemos a utilizar de nuevo nos dará la clave y el valor del siguiente elemento.

     Veámoslo con el ejemplo anterior de las capitales europeas. En principio llamamos a la función each($miarray), y la guardamos en una variable:

$verCap=each($cap);

Ahora la variable $verCap será un array que tendrá los siguientes elementos:

  • $verCap[0];// muestra la clave del elemento.
  • $verCap[1];// muestra el valor del elemento.
  • $verCap["key"];// muestra la clave del elemento.
  • $verCap["value"];// muestra el valor del elemento.

     Podemos usar indistintamente el 0, o la palabra key para obtener la clave; así como usar el 1 o la palabra value para obtener el valor.

     En principio el puntero interno del array apunta, si este no se ha usado antes, al primer elemento, por lo que para mostrar el primer elemento usaremos el siguiente código:

echo "Clave: $verCap[key] -- Valor: $verCap[value]";

      Lo cual nos mostrará en pantalla lo siguiente:

Clave: España -- Valor: Madrid

      Ahora el puntero ha avanzado una posición por lo que si volvemos a escribir de nuevo el código anterior obtendremos el valor del segundo elemento:

$verCap=each($cap);
echo "Clave: $verCap[key] -- Valor: $verCap[value]";

Clave: Francia -- Valor: París

     Debemos repetir tanto la función each($array) como el código que muestra en pantalla el resultado, (instrucción echo) para mostrar el siguiente elemento.

     Si volvemos a repetir el código, obtendremos con cada repetición el siguiente elemento, repitiéndolo 4 veces más veremos el resto de los elementos:

Clave: Inglaterra -- Valor: Londres
Clave: Italia -- Valor: Roma
Clave: Portugal -- Valor: Lisboa
Clave: Alemania -- Valor: Berlín


     La función each puede aplicarse también con arrays indexados. En este caso la clave nos dará el índice del elemento.



El puntero interno.

    Tenemos ahora el problema de controlar el puntero interno del array, ya que éste, con la función each() avanza una posición y al llegar al final no vuelve al principio. Además a veces queremos mostrar los elementos en otro orden o asegurarnos de que el puntero esté en una posición determinada.

    Para ello existen una serie de funciones que nos colocan el puntero en una posición concreta. Estas son:

  • reset($miarray);: Lleva el puntero a la primera posición.
  • end($miarray);: Lleva el puntero a la última posición.
  • next($miarray);: Lleva el puntero al elemento siguiente.
  • prev($miarray);: Lleva el puntero al elemento anterior.
  • current($miarray);: Lleva el puntero al elemento actual.

     Al aplicar estas funciones no debemos volver a definir la función each() pues el puntero ya ha cambiado de posición. basta con volver a imprimir en pantalla el valor para que el elemento se muestre en la nueva posición.



Trabajar con arrays


Ordenar arrays

     Podemos ordenar los elementos de un array, tanto en orden ascendente (de menor a mayor), como en orden desdendente (de mayor a menor). Si el array contiene elementos númericos esto es fácil de entender, pero si los elementos son cadenas de texto, la ordenación se hará por orden alfabético.

    Para ello utilizaremos las siguientes funciones, en todas ellas dentro del paréntesis (parámetro) escribiremos la variable que contiene el array:

En arrays indexados

  • sort($array): Ordena el array en orden ascendente
  • rsort($array): Ordena el array en orden descendente

En arrays asociativos

  • asort($array): Ordena el array en orden ascendente por valor.
  • arsort($array): Ordena el array en orden descendente por valor.
  • ksort($array): Ordena el array en orden ascendente por clave.
  • krsort($array): Ordena el array en orden descendente por clave.

     Estas funciones cambian el orden de los elementos en el array original, por lo que si queremos conservar el array original debemos hacerle una copia , Después podremos trabajar con la copia o, si trabajamos con el original, recuperar su estado inicial asignando su valor a la copia (operador de asignación =).


Insertar elementos

     Insertar un elemento en un array asociativo es lo mismo que asignarle al array un nuevo elemento con una nueva clave.

     Seguiremos con el array de ejemplo de la página anterior:

$cap=array("España"=>"Madrid", "Francia"=>"París", "Inglaterra"=>"Londres", "Italia"=>"Roma", "Portugal"=>"Lisboa", "Alemania"=>"Berlín");

     Si queremos insertar un nuevo elemento lo haremos de la siguiente manera:

$cap["Bélgica"]="Bruselas";

     El elemento se añadirá al final del array. Si la clave proporcionada corresponde con la de algún elemento ya existente, éste cambiará su valor. Si el array estaba ordenado, bien por claves o por valores, para volver a ordenarlo aplicaremos alguna de las funciones vistas anteriormente.

     Añadir elementos en un array indexado es algo más complicado, ya que si lo hacemos como en los arrays asociativos, en el corchete debemos escribir el número del elemento, en este caso, el valor dado sustituye al del elemento que ocupa ese lugar.

     Existen sin embargo una serie de funciones que añaden elementos a un array indexado. Estas son:

   array_push($array,"elemento1","elemento2");: añade elementos al final del array, dándoles como índice el número que les corresponda. Dentro del paréntesis escribiremos el nombre del array, y después separado por una coma, el elemento o elementos que queramos insertar. Podemos poner un sólo elemento o varios, separados por comas.

      array_unshift($array,"elemento1","elemento2");: añade elementos al principio del array, los índices de los demás elementos se reordenan según su posición. Los parámetros pasados dentro del paréntesis son iguales que en la función anterior.

    $array2=array_pad($array,"tamaño","elemento_relleno");: Devuelve un array $arrray2 con un nuevo tamaño. los nuevos elementos creados Tendrán el valor del "elemento de relleno". El $array original se conserva. Los argumentos que pasamos son:

  • $array: nombre del array que pretendemos modificar.
  • "tamaño": nuevo tamañó que tendrá el array.
  • "elemento_relleno": Valor que tendrán los nuevos elementos que se formen al dar un nuevo tamaño.


Eliminar elementos

     Existen también varias funciones para eliminar elementos de un array. Estas son:

    $elem = array_shift($array): Elimina el primer elemento del array y lo devuelve en la variable $elem.

   $elem =array_pop($array): Elimina el último elemento del array y lo devuelve en la variable $elem.

     $array2 = array_unique($array): Devuelve un array en el que se eliminan los elementos repetidos que haya en el array original $array, el cual se conserva como estaba.



Otras funciones

     Veremos aquí otras funciones útiles para trabajar con arrays, aunque no vamos a verlas todas, éstas son las más habituales:

    array_reverse($array);: Devuelve un array con los mismos elementos pero en orden inverso.

     in_array($array,"valor");: Comprueba si un valor está dentro de del array. Devuelve un valor boleano (verdadero 1 o falso "")

    array_slice($array,posicion,tamaño);: Extraemos parte de los elementos de un array indexado en un nuevo array, para ello $array, es el array del que partimos. posicion es el índice del elemento a partir del cual se formará el nuevo array, y en tamaño indicaremos aquí el número de elementos que tendrá el nuevo array. Si no ponemos este último parámetro el nuevo array se forma desde el elemento indicado en posicion hasta el final.

   array_values($array);: Devuelve un array indexado cuando le pasamos un array asociativo. Las claves se eliminan, y en su lugar tenemos los índices.

    array_keys($array);: Devuelve un nuevo array indexado que consiste en las claves del$array pasado como argumento. En arrays indexados el array devuelto contiene los índices de los elementos.

      array_merge($array1,$array2);: Devuelve un array que tendrá los elementos de los dos arrays pasados como parámetros, es decir el nuevo array consiste en la suma de los otros dos.



Arrays multidimensionales

    Como hemos visto anteriormente, un array es una lista en la que se guardan varios datos o elementos. Sin embargo muchas veces una lista no es suficiente para guardar los datos, y estos quedan mejor si los guardamos en una tabla.

   La solución para guardar una tabla en un array es crear un array multidimensional, es decir un array en el que cada uno de sus elementos es a su vez otro array.

    En el array principal guardaremos la tabla. mientras que en cada uno de sus elementos o arrays secundarios guardaremos una fila de la tabla.

    Nada nos impide que cada uno de los elementos de los arrays que forman las filas sea a su vez otro array, con lo que podríamos tener un array en tres dimensiones. También podemos formar arrays de más de tres dimensiones, aunque puede ser que sea dificil de manejarlos.

    Es conveniente que para llevar un cierto orden en la tabla que queremos mostrar, cada uno de los arrays secundarios (filas) tenga el mismo número de elementos, así facilitaremos el trabajo de visualización en pantalla.

   para mostrar los arrays multidimensionales en pantalla necesitaríamos un código muy complicado, ya que según lo visto hasta ahora debemos mostrar uno a uno todos los elementos. Sin embargo existen una serie de estructuras que veremos más adelante, que hacen que esto se simplifique bastante.




No hay comentarios.:

Publicar un comentario