Variables, datos y operadores¶
Variables¶
Para definir una variable se utiliza la siguiente sintaxis:
<?php
$variable = valor;
- El nombre ha de comenzar con
$
, seguido de una letra. - PHP distingue entre mayúsculas y minúsculas.
- No es necesario definir el tipo de dato de la variable.
- Si el valor es una cadena de texto, debe ir entre comillas.
- Se puede acceder al valor de una variable desde cualquier parte del
script
, salvo que esté definida dentro de una función. En ese caso, solo es accesible dentro de la función. - Una variable definida dentro de una función no puede ser usada fuera de ella (toma el valor
null
).
A continuación se pone en práctica la definición de variable en PHP:
<?php
$nombre = "Ginés";
$nombreCompleto = "Ginés López";
$numero = 123;
$numero2 = 456;
$pi = 3.14;
$suerte = true;
$sinValor;
echo $sinValor;
Variables++
Como ya estudiaste en el módulo de programación el curso pasado, las variables pueden tener diferente funcionalidad dependiendo de su alcance y definición:
- Variables globales: las funciones pueden acceder a variables externas si se utiliza la palabra clave
global
dentro de la función:global $nombreVariable;
. De esta forma, la función buscará el valor de la variable en el resto del script. - Variables superglobales: son accesibles desde cualquier parte del código, sin necesidad de utilizar la palabra clave
global
. - Variables estáticas: si una variable es definida como estática dentro de una función, conservará su valor entre las ejecuciones de la función, incluso después de salir de su ámbito. La línea que le asigna un valor inicial solo se ejecuta la primera vez que la función se ejecuta (hasta que la página se recargue). Para declarar una variable como estática con un valor inicial, se usa
static $a = 3;
.
Tipos de variables¶
En PHP no es necesario declarar el tipo de variable. Se asigna automáticamente según el valor. Los principales tipos son:
- Integer: Números enteros.
- Double: Números de coma flotante.
- String: Cadenas de texto.
Para realizar conversiones entre tipos de datos, se utilizan las siguientes funciones:
floatval()
,intval()
,strval()
: Devuelven una variable convertida al tipo especificado.settype()
: Fuerza la conversión al tipo de dato indicado.gettype()
: Obtiene el tipo de una variable.is_int()
,is_float()
,is_string()
,is_array()
,is_object()
: Devuelventrue
si la variable es del tipo indicado.
<?php
$uno = 1;
var_dump(is_int($uno)); // true
$unofloat = floatval($uno);
settype($uno, "string");
var_dump(is_int($uno)); // false
var_dump(is_string($uno)); // true
settype($uno, "float");
var_dump(is_int($uno)); // false
var_dump(is_float($uno)); // true
var_dump(is_int(intval($uno))); // true
Constantes¶
Las constantes son valores que no cambian durante la ejecución del script. Se pueden definir de dos formas:
define(NOMBRE, valor);
const NOMBRE;
(Disponible desde PHP 5.3)
<?php
define("PI", 3.1416);
const IVA = 0.21;
echo PI, " ", IVA; // No se pone el símbolo dólar
- Se declaran siempre en MAYÚSCULAS
- Hay un conjunto de constantes ya predefinidas, también conocidas como magic constants que iremos conociendo a lo largo del curso.
Operadores¶
Ariméticos¶
Ejemplo | Nombre | Resultado |
---|---|---|
-$a |
Negación | Opuesto de $a . |
$a + $b |
Suma | Suma de $a y $b . |
$a - $b |
Resta | Diferencia de $a y $b . |
$a * $b |
Multiplicación | Producto de $a y $b . |
$a / $b |
División | Cociente de $a y $b . |
$a % $b |
Módulo / Resto | Resto de $a dividido por $b . |
$a ** $b |
Potencia | Resultado de $a elevado a $b . PHP >= 5.6. |
Para concatenar cadenas, se utiliza el operador .
:
<?php
$x = 33;
$y = 11;
$z = $x + $y;
echo "La suma de 33 y 11 es ".44."<br />";
echo "La suma de ".$x." y ".$y." es ".(33 + 11)."<br />";
echo "La suma de ".$x." y ".$y." es ".$z."<br />";
?>
También es posible imprimir variables dentro de cadenas directamente:
<?php
echo "La suma de $x y $y es $z <br />";
?>
Si es necesario agregar más texto junto a una variable, se puede rodear el nombre de la variable con llaves:
<?php
$color = "rojo";
echo "El plural de $color el ${color}s";
?>
Comparación¶
Ejemplo | Nombre | Resultado |
---|---|---|
$a == $b |
Igual | true si $a es igual a $b tras de la conversión de tipos. |
$a === $b |
Idéntico, Comparación estricta | true si $a es igual a $b , y son del mismo tipo de dato. |
$a != $b , $a <> $b |
Diferente | true si $a no es igual a $b después de la conversión de tipos. |
$a !== $b |
No idéntico | true si $a no es igual a $b , o si no son del mismo tipo. |
$a < $b |
Menor que | true si $a es estrictamente menor que $b . |
$a > $b |
Mayor que | true si $a es estrictamente mayor que $b . |
$a <= $b |
Menor o igual que | true si $a es menor o igual que $b . |
$a >= $b |
Mayor o igual que | true si $a es mayor o igual que $b . |
$a <=> $b |
Nave espacial | Devuelve -1 , 0 o 1 cuando $a es respectivamente menor, igual, o mayor que $b (PHP >= 7) |
$a ?? $b ?? $c |
Fusión de null | Operador ternario que asigna el primer operando de izquierda a derecha que exista y no sea null . null si no hay valores definidos y no son null (PHP >= 7) |
Lógicos¶
Ejemplo | Nombre | Resultado |
---|---|---|
$a and $b , $a && $b |
And (y) | true si tanto $a como $b son true . |
$a or $b , $a || $b |
Or (o inclusivo) | true si cualquiera de $a o $b es true . |
$a xor $b |
Xor (o exclusivo) | true si $a o $b es true , pero no ambos. |
!$a |
Not (no) | true si $a no es true . |
Asignación¶
Ejemplo | Nombre | Resultado |
---|---|---|
$a = $b |
Asignación | Asigna a $a el valor de $b |
$a += $b |
Asignación de la suma | Le suma a $a el valor de $b . Equivalente a $a = $a + $b |
$a -= $b |
Asignación de la resta | Le resta a $a el valor de $b . Equivalente a $a = $a - $b |
$a *= $b |
Asignación del producto | Asigna a $a el producto de $a por $b . Equivalente a $a = $a * $b |
$a /= $b |
Asignación de la división | Asigna a $a el conciente de $a entre $b . Equivalente a $a = $a / $b |
$a %= $b |
Asignación del resto | Asigna a $a el resto de dividir $a entre $b . Equivalente a $a = $a % $b |
$a .= $b |
Concatenación | Concatena a $a la cadena $b . Equivalente a $a = $a . $b |
$a++ |
Incremento | Incrementa $a en una unidad. Equivalente a $a = $a + 1 |
$a-- |
Decremento | Decrementa $a en una unidad. Equivalente a $a = $a - 1 |
Prioridad de los operadores
Recuerda la prioridad de los operadores: primero los paréntesis, luego la negación (!
), productos/divisiones, sumas/restas, comparaciones, operadores lógicos, y finalmente la asignación. Más información sobre precedencia de los operadores en la documentación oficial.
Actividades¶
-
AC 202. (RA2 / CE2d CE2g / IC1 / 3p) - Siguiendo con la prueba técnica iniciada en la actividad anterior (AC201), se debe escribir un programa que utilice las variables $x y $y, asignándoles los valores 33 y 999 respectivamente. A continuación, se mostrará en pantalla el valor de cada variable, la suma, la resta, la división y la multiplicación.
-
AC 203. (RA2 / CE2c CE2d CE2g / IC1 / 3p) - Siguiendo con la prueba técnica, se debe escribir un programa que almacene en variables el nombre, primer apellido, segundo apellido, correo electrónico, año de nacimiento y número de teléfono. Luego, se mostrará esta información en pantalla dentro de una tabla.
-
AC 204. (RA2 / CE2d CE2g / IC1 / 3p) - A partir de una cantidad de dinero, se deberá mostrar su descomposición en billetes (500, 200, 100, 50, 20, 10, 5) y monedas (2, 1), para que el número de elementos sea mínimo. Aunque este problema se puede resolver mediante el uso de bucles e incluso arrays, en este caso, nuestro director técnico quiere que no utilicemos ninguna instrucción condicional para comprobar si tenemos claro como emplear los operadores que ofrece el lenguaje.
Por ejemplo, al introducir 139 debe mostrar:
1 billete de 100 0 billete de 50 1 billete de 20 1 billete de 10 1 billete de 5 2 moneda de 2
Tip
Es posible forzar la división entera mediante la función
intdiv($dividendo, $divisor)
, o convertir un número flotante a entero usando la funciónintval()
. -
AR 205. (RA2 / CE2c CE2d CE2g / IC1 / 3p) - Se solicita un programa que, a partir de un número, se debe mostrar en pantalla si el valor es positivo, negativo o cero. Se proporcionarán una serie de valores de ejemplos codificados en diferentes variables.
-
AR 206. (RA2 / CE2c CE2d CE2g / IC1 / 3p) - Se requiere escribir un programa que funcione como un reloj. A partir de los valores de hora, minuto y segundo, el programa debe mostrar el instante temporal un segundo después. Por ejemplo, de las 17:23:45 debe mostrar 17:23:46. Debes tener en cuenta el cambio de minutos, el de horas, e incluso el de días.