|
|
Línea 721: |
Línea 721: |
| | | |
| ===Arrays=== | | ===Arrays=== |
− | ===Variables predefinidas=== | + | Un tipo de datos compuesto es aquel que te permite almacenar más de un valor. En PHP puedes utilizar dos tipos de datos compuestos: el array y el objeto. Los objetos los veremos más adelante; vamos a empezar con los arrays. |
| + | |
| + | Un array es un tipo de datos que nos permite almacenar varios valores. Cada miembro del array se almacena en una posición a la que se hace referencia utilizando un valor clave. Las claves pueden ser numéricas o asociativas. |
| + | |
| + | // array numérico |
| + | $modulos1 = array(0 => "Programación", 1 => "Bases de datos", ..., 9 => "Desarrollo web en entorno servidor"); |
| + | // array asociativo |
| + | $modulos2 = array("PR" => "Programación", "BD" => "Bases de datos", ..., "DWES" => "Desarrollo web en entorno servidor"); |
| + | Icono de iDevice Debes conocer |
| + | En PHP existe la función print_r, que nos muestra todo el contenido del array que le pasamos. Es muy útil para tareas de depuración. |
| + | |
| + | Función print_r |
| + | |
| + | Para hacer referencia a los elementos almacenados en un array, tienes que utilizar el valor clave entre corchetes: |
| + | |
| + | $modulos1 [9] |
| + | $modulos2 ["DWES"] |
| + | Los arrays anteriores son vectores, esto es, arrays unidimensionales. En PHP puedes crear también arrays de varias dimensiones almacenando otro array en cada uno de los elementos de un array. |
| + | |
| + | // array bidimensional |
| + | $ciclos = array( |
| + | "DAW" => array ("PR" => "Programación", "BD" => "Bases de datos", ..., "DWES" => "Desarrollo web en entorno servidor"), |
| + | "DAM" => array ("PR" => "Programación", "BD" => "Bases de datos", ..., "PMDM" => "Programación multimedia y de dispositivos móviles") |
| + | ); |
| + | Para hacer referencia a los elementos almacenados en un array multidimensional, debes indicar las claves para cada una de las dimensiones: |
| + | |
| + | $ciclos ["DAW"] ["DWES"] |
| + | En PHP no es necesario que indiques el tamaño del array antes de crearlo. Ni siquiera es necesario indicar que una variable concreta es de tipo array. Simplemente puedes comenzar a asignarle valores: |
| + | |
| + | // array numérico |
| + | $modulos1 [0] = "Programación"; |
| + | $modulos1 [1] = "Bases de datos"; |
| + | ... |
| + | $modulos1 [9] = "Desarrollo web en entorno servidor"; |
| + | // array asociativo |
| + | $modulos2 ["PR"] = "Programación"; |
| + | $modulos2 ["BD"] = "Bases de datos"; |
| + | ... |
| + | $modulos2 ["DWES"] = "Desarrollo web en entorno servidor"; |
| + | Ni siquiera es necesario que especifiques el valor de la clave. Si la omites, el array se irá llenando a partir de la última clave numérica existente, o de la posición 0 si no existe ninguna: |
| + | |
| + | $modulos1 [ ] = "Programación"; |
| + | $modulos1 [ ] = "Bases de datos"; |
| + | ... |
| + | $modulos1 [ ] = "Desarrollo web en entorno servidor"; |
| + | |
| <div class="slide"> | | <div class="slide"> |
| ===Leer datos=== | | ===Leer datos=== |
Variables, constantes y tipos de datos
Pregunta
- Qué es un tipo de dato
- Qué es una variable
|
Definición
Un tipo de dato es un conjunto de valores para los cuales hay definidos una serie de operaciones
|
Definición
Una variable es una posición de memoria que va almacener algún valor de un determinado tipo, y cuyo contenido puede variar durante la ejecución de un programa
|
- PHP
- Tipado dinámico
- Los lenguajes de programación pueden ser mas o menos exigentes en cuanto a la declaración de los tipos de las variables para poder ser usados durante la ejecución de un programa.
- Lenguajes fuertemente tipos o débilmente tipados o tipado dinámico
- En este sentido php es un lenguaje de tipado dinámico, el tipo de la variable depende del valor que tiene en un momento dado o de los operadores que lo afecten.
Variables
Identificador
- En php las variablas se prepresentas con el signo $ seguido de un caracter de subrayado o una letra y luego letras, números y caracteres de subrayado en cualquier orden y número.
- identificador de variables
Puntos clave
$(a..zA..Z_0-9)*
|
<?php
$miVariable= 8;/*Variable de tipo entero*/
edad = 5/*Error en el identificador*/
$5edad = 5 /*Error en el identificador */
?>
- El lenguaje es sensible a mayúsculas y minúsculas
- En los identificadores de variables
- No lo es en nombres de funciones
- No lo es en palabras reservadas (if, then, else,...)
Valores y tipos de datos
- En Php tenemos 8 tipos de datos
- En php tenemos
- 5 tipos básicos o primitibos (booleano, entero, real, string, NULL)
- 3 compuestos (array, objeto, recurso)
tipos básicos
- entero integer
- Posible notación decimal/octal/hexadecimal
decimal [0..9]+
hexadecimal 0x[0..f]+
octal 0[0..7]+
binario 0b[01]+
- Todos ellos pueden ser positivos o negativos
**$Numero=10;
*Octal
**$NumeroOctal=067;
*Hexadecimal
**$NumeroHex=0cA56B;
- Al imprimirlos con print los veré con valor decimal
- Para verlos en otras base hay que usar printf o format o utilizar las conversiones dechex o dechex o octdec, .... que se ven después
- cadena string
$frase="Esto es un literal de cadena de caracteres"
- real o coma flotante float
$valor=$0.2345;
$valor=.54;
$valor=7E-12;
- Booleano boolean
$estado=TRUE;
$estado=TrUe;
$estado=falsE;
- NULL
- un tipo especial que solo tiene ese valor
- Una variable tiene el valor null
- Si aún no se le ha asignado valor, o éste se ha destruido (unset()
- Si se le ha asignado explícitametne el valor NULL.
- Tipos complejos
- Objetos básico en su aspecto de OOP
- Matrices o arrays muy muy utilizados
- Recursos este más que un tipo complejo es un tipo especial que hace referencia a un recurso externo referencia , como una conexión a una base de datos o como una referencia a un fichero pdf.
- Este tipo de variables las veremos más adelante
Comentarios
Son ignorados por el intérprete
<?php
/*
Este código no hace nada pero muestra
la sintaxis de los comentarios
como este que ocupa varias líneas tipo lenguaje C o Java
*/
$miVariable= 8;// Esta parte de la línea se ignorará
$miVariable+= 8;# y esta parte de línea tambien
echo "Valor de la variable $miVariable";
//Este es otro comentario de una sola línea
#Este es otro modo de hacer comentarios tipo script de linux
?>
Separación de instrucciones
- En php cada instrucción se separa de otra con ; (punto y coma).
- El cierre de etiqueta php implica un ; (punto y coma), por lo que podríamos no ponerlo
<?php
$a=5;
$echo'la instruccion de arriba es una y esta otra";
$echo'esta instrucción puede no llevar ; por ir antes de fin de etiqueta php, pero mejor ponerla"
?>
- Este código nos visualizará
Valor de la variable 16
Actividad
- Probamos a hacer programas sencillos donde asignamos y visualizamos valores
- entero:
- cadena:
- booleano:
- real
- NULL
|
Valor de variable
- Una variable le asigno un valor en cualquier momento
- El tipo de la variable depende del valor que tiene
- Hay una serie de funciones del sistema relacionadas con los valores y las variables
Funciones de php de tipos y valores
- Existen una serie de funciones que son interesantes de conocer
- Están relacionadas con los tipos de datos y valores
- Alguna de ellas son extremadamente útiles y utilizadas, por ejemplo antes de procesar un dato, hay que ver que dicho dato tenga valor.
- A continuación trataremos alguna de ellas
- var_dump
void var_dump($expresion)
- Nos da información sobre la estructura de un valor resultado de una expresion
- isset
- verifica que una variable tiene valor (está definida y no tiene un valor null)
<?php
$VariableValor= 5;
print ("El valor de la variable es $VariableValor");
print ("El valor de otra variable es $OtraVariableValor");
if (isset($VariableValor))
print ("VariableValor tiene valor asignado");
else
print ("VariableValor no no tiene valor asignado");
if (isset($OtraVariableValor))
print ("OtraVariableValor tiene valor asignado");
else
print ("OtraVariableValor no no tiene valor asignado");
?>
- empty
- Determina si una variable no existe. Devuelve true si no existe o su valor está vacío
Actividad
Probamos las fuciones var_dump() que nos da información sobre el valor y el tipo
|
Actividad
Usando la función xxxyyy donde xxx e yyy será dec oct bin o hex para convertir el valor de un sistema numérico a otro
|
Actividad
- Define las siguientes variables que se especifican en el código siguiente y verifica el resultado con empty()
|
$num=0;
$nombre="";
$nombre=null;
$nombre="0";
$pregunta = FALSE;
- gettype]
- Devuelve el tipo de una variable
string gettype($variable)
- [1]is-double is-int, is-xxx
- son funciones donde xxx especificado en el último nombre, puede ser cualquiera de los tipos
- Todas ellas devuelve un booleano que indica si la variable, valor o expresion es o no de ese tipo,
string is_int($variable);
string is_double($variable);
string is_bool($variable);
string is_integer($variable);
string is_null($variable);
string is_string($variable);
...
Actividad
Visualizar de qué tipo es la expresión mostrada en el código siguiente y visualiza el valor de la expresión
|
- unset
- Destruye la variable especificada perdiéndose su valor
void unset ($var)
Cadenas
- En php las cadenas de caracteres, son expresiones literales
- Tenemos 4 maneras diferentes de poder expresar una cadena de caracteres como un literal
- Comillas dobles ""
- Comillas sencillas ''
- Sintasix heredoc
- Sintaxis nowdoc
- Comillas dobles
- En ellas se interpretan los caracteres especiales
- $ seguido de un nombre, interpreta que es una variable y toma su valor (null si no tiene valor o no está definida
- \ es un caracter de secuencia de escape, e interpreta que el carácter siguiente tiene un significado especial \\ \a \n \r \t , ...
- Si queremos que se ignore un carácter especial, éste ha de ir precedido por el caracter \
$nombre = 'pedro';
echo "El valor de la variable \$nombre es $nombre";
El valor de la variable $nombre es pedro
- Comillas simples
- En ellas solo se interpreta el carácter, seguido de \ o bien seguido de la barra invertida \\ comilla simple \'
- El resto de caracteres no se interpretan
$nombre = 'pedro';
echo 'El valor de la variable $nombre es $nombre y \\ \'texto\' si que se ve entre comillas simples';
El valor de la variable $nombre es $nombre y \ 'texto' si que se ve entre comillas simples';
- Heredoc
- Este tipo de expresión de string es útil para especificar cadenas largas en multilíneas
- Se comporta como un string entre comillas dobles para el tema de interpretar y escapar ciertos caracterres
- Se establece con el operador <<<
- A continuación viene un identificador
- Después empieza a especificarse la cadena de caracteres
- Para finalizarla se escribe en una nueva línea el identificador
<?php
$frase = <<<FINAL
Esta es una cadena
de caracteres que se asignará
a la variable frase
y termina con la palabra
con la que hemos empezado
FINAL;
<?
- La palabra final no debe tener ningún espacio ni tabulador antes
- NewDoc
- Es igual que heredoc , pero sin interpretar los caracteres especiales salvo \\ \.
- O sea que es como un entrecomillado sencillo
- La sintasix es igual que la de heredoc, pero a diferencia el delimitador que se especifica al principio debe de ir entrecomillado con comillas simples
<?php
$nombre=pedro;
$frase = <<<'FINAL'
El valor de $nombre
es $nombre, pero aquí
no lo veo por que es newdoc
FINAL;
Funciones de salida
- Construcciones básicas para salida de caracteres
- No son funciones (con o sin paréntesis) son echo' print
echo
- Es el uso más sencillo
- Imprime una cadena como argumentos
- En la versión sin paréntesis también puedes pasar una lista de argumentos.
<?php
- Echo “primer argumento”, “segundo argumento”, “tercer argumeto”
?>
print
Tiene dos diferencias con echo
- Sólo puede aceptar un argumento
- Devuelve un valor que representa si la sentencia ha tenido o no éxito
- Para las siguientes actividades debes conocer las estructuras de control básicas.
Estructuras de control 1
A continuación veremos las estructuras de control
Son de tres tipos
- Selección
- Iteración
- Secuenciales
Para construirlas necesitamos operadores
- Operadores lógicos
Operadores lógicos
and
or
!
xor
&&
||
- Funcionan por cortocircuito
- Construyen expresiones booleanas y tras su evaluación retorna un valor booleano.
Operadores lógicos
Operadores lógicos
==
¡=
<
>
<=
>=
===
Operadores ternario
Expresión? SentenciaOKExpresion : SentenciaNoOkExpresion
Selección if
If ( condicion)
Sentencia 1;
if (condicion){
Sentencia 1
Sentencia 2
}
if (condicion)
Sentencia 1
else
Sentencia 2
if condicion:
Sentencia 1;
endif;
iteracion for
for (expression_inicial; comprobacion_terminacion;exrpesion_incremento){
sentencias;
}
Actividad
Haz un programa que sume los 100 primeros números
|
Actividad
Haz un programa que obtenga de forma aleatoria dia (1-31)mes(1-12) y año(1-3000) y nos diga si la fecha es correcta o no y porqué
|
Actividad
- Haz un programa que a partir de precio hora y de número de horas calcule una nómina, teniendo en cuenta que:
- mas de 40 horas son extras (1.5 el precio establecido
- IRPF < 600E exento
- Entre 600 y 800 5%
- Mas de 800 12 %
- Nos debe de dar detalle del bruto, descuentos y neto de salario
|
Actividad
Un programa que nos diga si un número es o no primo
|
Actividad
Haz un programa que muestre la tabla de multiplicar de un número aleatorio en una tabla. Intenta que las sentencias html queden fuera del código de php
|
Constantes
- Se definen con la funcion define()
define("IVA",0.21);
$total=$base*(1+IVA);
- identificador
- Se usa el mismo criterio de construcción pero no empieza por $
- Se pueden definir y utilizar en cualquier momento que se necesiten.
- Para saber si una constante está definida defined()
Constantes predefinidas
- Como en otros lenguajes, existen una serie de constantes predefinidas
- Nos las ofrece el entorno y dependerán de él para su valor
- PHP Ofrece un gran número de constantes predefinidas http://php.net/manual/es/reserved.constants.php
- En php hay 8 constantes que su valor puede cambiar dependiendo del entorno donde se ejecutan
constantes predefinidas en php
Tarea
Realiza un programa que visualice las constantes predefinidas variables vistas anteriormente, y al menos otras 8 de las constantes predefinidas estandar
|
Ambito de una variable
- http://php.net/manual/es/language.variables.scope.php
- Ya sabemos que en PHP puedes utilizar variables en cualquier lugar de un programa.
- Si esa variable aún no existe, la primera vez que se utiliza se reserva espacio para ella.
- En ese momento, dependiendo del lugar del código en que aparezca, se decide desde qué partes del programa se podrá utilizar esa variable.
- A esto se le llama visibilidad de la variable.
- En función de esto tenemos variables locales a la función y variables locales al script
$a = 1;
function prueba()
{
// Dentro de la función no se tiene acceso a la variable $a anterior
$b = $a;
// Por tanto, la variable $a usada en la asignación anterior es una variable nueva
// que no tiene valor asignado (su valor es null)
}
- Para poder hacer dentro de una función a una variable definida fuera, he de usar la palabra reservada global
$a = 1;
function prueba()
{
global $a;
$b = $a;
// En este caso se le asigna a $b el valor 1
}
Variables static
- Si una variable la declaramos static, hacemos que su posición de memoria no se elimine aunque no sea accesible por el script
- Cuando volvamos a una sección del script donde vuelve a ser accesible, entonces retomaremos esa posicion de memoria, con el valor que tuviera
function contador()
{
static $a=0;
$a++;
// Cada vez que se ejecuta la función, se incrementa el valor de $a
}
- Las variables estáticas deben inicializarse en la misma sentencia en que se declaran como estáticas. De esta forma, se inicializan sólo la primera vez que se llama a la función.
Tarea
- Haz un programa que llame 20 veces a una función
- Cada vez que llame a la función, la función muestra un mensaje que me diga me has llamado 1 vez, o me has llamado 20 veces
|
Variables globales Vs superglobales
- Ya hemos visto como en php una variable tiene el ámbito en el cual es accesible y visible
- Las variables son locales a la función en la cual aparecen, si queremos acceder dentro de una función a una variable del script y actuar sobre su valor, debemos hacerla global.
- PHP Dispone un un importante conjunto de variables superglobales.
- El desarrollador tiene acceso a dichas variables en cualquier momento del script.
- El sistema se encarga de tenerlas actualizadas, con el valor correspondiente
- PHP incluye unas Son variables internas predefinidas que pueden usarse desde cualquier ámbito, por lo que reciben el nombre de variables superglobales.
- No es necesario que uses global para acceder a ellas.
- Cada una de estas variables es un array que contiene un conjunto de valores
- Posteriormente veremos cómo se utilizan los arrays).
- Aquí puedes acceder a las variables superglobales disponibles en PHP se pueden ver son las siguientes:
- Son las siguientes
- $GLOBALS Hace referencia a todas las variables disponibles en el ámbito global
- $_SERVER Información del entorno del servidor y de ejecución
- $_GET Variables HTTP GET
- $_POST Variables HTTP POST
- $_FILES Variables de Carga de Archivos HTTP
- $_COOKIE Cookies HTTP
- $_SESSION Variables de sesión
- $_REQUEST Variables HTTP REQUEST. Un array asociativo que por defecto contiene el contenido de $_GET, $_POST y $_COOKIE.
- $_ENV
- Analizaremos una de ellas
- $_SERVER.
- Contiene información sobre el entorno del servidor web y de ejecución. Entre la información que nos ofrece esta variable, tenemos:
- Principales valores de la variable $_SERVER
- $_SERVER['PHP_SELF']: script que se está ejecutando actualmente.
- $_SERVER['SERVER_ADDR']: dirección IP del servidor web.
- $_SERVER['SERVER_NAME']: nombre del servidor web.
- $_SERVER['DOCUMENT_ROOT']: directorio raíz bajo el que se ejecuta el guión actual.
- $_SERVER['REMOTE_ADDR']:dirección IP desde la que el usuario está viendo la página.
- $_SERVER['REQUEST_METHOD']:método utilizado para acceder a la página ('GET', 'HEAD', 'POST' o 'PUT')
Actividad
Haz un script que no de la información de las variables vistas anteriormente
|
Array
Tarea
Random Images
- Escribir un programa que:
- Inicialice un vector con 10 imágenes (podéis utilizar éste código.php que crea el vector $imagenes)
- La página debe mostrar, aleatoriamente, 3 imágenes (utilizar la función shuffle ($imagenes) la cuál desordena el vector)
- Cada 5 segundos ha de refrescarse la página para ir mostrando imágenes distintas (podéis usar, por
ejemplo, este trozo de código HTML y añadirlo en el <HEAD> de la página:
<META HTTP-EQUIV=Refresh CONTENT="5; URL=vuestra_pagina.php">
</html>
Ejemplo:
|
|