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:
}}
<!--
<div class="slide">
===Seleccion else elseif===
</div>
<div class="slide">
===Seleccion switch===
</div>
<div class="slide">
===iteracion while===
</div>
<div class="slide">
===iteracion do-while===
</div>
===Arrays===
===Variables predefinidas===
<div class="slide">
===Leer datos===
*Para leer datos lo hacemos de un formulario
*el formulario lo envía el cliente
*Obligatoriamente necesitamos el atributo name de la etiqueta input
*EJ. en el emisor tenemos
Dime un número:
<FORM ACTION="tabla.php" METHOD="GET">
<INPUT TYPE="text" NAME="numero"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</div>
Al presionar el botón de enviar se envía la página al servidor
La página que especificamos en el botón action la gestiona ''tabla.php'' en este caso
En el servidor para recuperar el valor utilizaremos la tabla supergobal
una tabla es una estructura indexada por índices
leeremos el índice nombre de variable de la tabla
$_GET o $_POST dependiendo de el método de envío
Valor numérico introducido: <?php echo $_GET['numero'] ?>
<div class="slide">
===iteracion while===
</div>
<div class="slide">
===iteracion while===
</div>
|