Saltar a contenido

Variables, datos y operadores

Variables

Para definir una variable se utiliza la siguiente sintaxis:

<?php
 $variable = valor;
Al definir una variable, se deben tener en cuenta algunas consideraciones:

  • 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:

ejemplovariable.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(): Devuelven true si la variable es del tipo indicado.
tiposvariables.php
<?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ón intval().

  • ⚓ 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.