Variables y tipos de datos en PHP: ejemplos para empezar

Una variable nos permite guardar un dato y utilizarlo después. En una página PHP podemos guardar el título, el nombre de una persona o el número de artículos de una lista, sin repetir ese valor cada vez que lo necesitamos.

Esta es la segunda parte del curso de nuestra primera página web en PHP. Vamos a crear variables, distinguir texto y números y terminar con una página que utiliza esos datos. Los ejemplos están pensados para PHP 8 y podemos ejecutarlos en un archivo separado de pruebas.

Cabecera del curso de desarrollo de páginas web con PHP

Crear una variable y darle un nombre

En PHP escribimos $ delante del nombre. El signo = asigna un valor, no compara dos valores:

<?php
$nombre = 'Lucía';
$edad = 25;

echo $nombre;

La primera variable contiene texto y la segunda un número entero. Cada instrucción termina con punto y coma. Aunque aquí expliquemos los pasos en español, esos signos forman parte del código y no debemos quitarlos.

Para los nombres que utilizaremos en el curso podemos empezar por una letra o un guion bajo, y continuar con letras, números o guiones bajos. $nombre_usuario y $articulo_2 son nombres válidos. $2articulo no lo es, porque empieza por un número.

También importan las mayúsculas: $nombre y $Nombre son variables diferentes. Si escribimos una de cada forma por error, PHP no va a entender que queríamos utilizar la misma.

Me quedaría con nombres que expliquen el dato. $numero_articulos se entiende mejor que $x cuando volvemos al archivo unos días después. El manual de variables de PHP recoge las reglas completas.

$this tiene un significado especial dentro de los objetos y no podemos asignarle otro valor. Variables como $_POST o $_SERVER contienen información del entorno y de las peticiones. No las utilizaríamos como nombres de nuestros datos propios. No es correcto tratar todos esos casos como si fueran la misma prohibición del lenguaje.

Cambiar un valor y unir textos

Podemos asignar otro valor a una variable que ya existe. Para unir textos utilizamos el punto:

<?php
$texto = 'Mi primera página web';
$texto = $texto . ' con el curso de ElSoftwareLibre';

echo $texto;

El resultado es Mi primera página web con el curso de ElSoftwareLibre. El espacio del segundo texto es importante. Si lo quitamos, las palabras quedarán pegadas.

Ejemplo de concatenación de texto PHP abierto en un editor

La operación cambia $texto. No crea por sí sola otra variable ni conserva el valor anterior para recuperarlo después. Si necesitamos ambos mensajes, los guardamos con nombres distintos.

Para añadir texto a una variable también existe .=. No hace falta aprender todas las abreviaturas de golpe, pero conviene reconocer que realiza una concatenación y asigna el resultado.

Texto, números, booleanos y null

El tipo depende del valor que estamos manejando. Podemos inspeccionarlo con var_dump, que muestra tanto el tipo como el contenido:

<?php
$titulo = 'Software libre';
$visitas = 12;
$altura = 1.75;
$publicado = false;
$telefono = null;

var_dump($titulo, $visitas, $altura, $publicado, $telefono);

string es texto, int un número entero, float un número de coma flotante, bool un valor verdadero o falso y null representa aquí un dato ausente.

Los números del código utilizan punto para los decimales. Escribimos 1.75, no 1,75. Mostrarlo con coma al lector es un asunto de formato de salida, distinto del valor que guarda la variable.

Tampoco es lo mismo false que 'false'. El primero es un booleano. El segundo es un texto de cinco letras y no se comporta como una condición falsa sólo porque su nombre lo parezca. El manual de booleanos explica esas conversiones.

El rango de un entero depende de la plataforma. No se limita siempre al rango de 32 bits. Podemos comprobar nuestro entorno con:

<?php
var_dump(PHP_INT_SIZE, PHP_INT_MAX, PHP_INT_MIN);

Estas constantes aparecen en la documentación de enteros de PHP. Para empezar no hace falta memorizar los límites, pero sí evitar presentar uno como universal.

Los float tienen una precisión limitada. Algunos decimales no pueden representarse exactamente en binario, como explica el manual de coma flotante. Por eso no diseñaría un cálculo de importes exactos suponiendo que cualquier suma de decimales devuelve un resultado matemático perfecto.

Un número con comillas sigue siendo texto

Las comillas cambian el tipo inicial del valor:

<?php
$cantidad = 12;
$cantidad_como_texto = '12';

var_dump($cantidad, $cantidad_como_texto);
var_dump($cantidad == $cantidad_como_texto);
var_dump($cantidad === $cantidad_como_texto);

La primera comparación da true, porque == puede convertir los valores para compararlos. La segunda da false, porque === exige también que tengan el mismo tipo. El manual de comparaciones detalla esa diferencia.

PHP permite cambiar el tipo del valor que contiene una variable al asignarle otro. Eso no significa que el lenguaje carezca de declaraciones de tipos: podemos utilizarlas, por ejemplo, en parámetros, retornos y propiedades. Lo veremos cuando trabajemos con funciones y objetos. La documentación de tipos explica en qué lugares se aplican.

No confiaría en convertir automáticamente cualquier texto en un número válido. Un campo recibido de un formulario puede estar vacío o contener letras. Habrá que validarlo cuando lleguemos a las entradas del usuario, no sólo sumarle cero y darlo por correcto.

Guardar varios datos con un array

Un array puede contener varios valores. En este ejemplo las claves nos permiten identificar cada dato:

<?php
$articulo = [
    'titulo' => 'Aprender PHP',
    'categoria' => 'Programación',
    'publicado' => true,
];

echo $articulo['titulo'];

Para leer el título utilizamos la clave 'titulo' entre corchetes. No imprimimos todo el array con echo, porque no es una cadena de texto. Para inspeccionar su contenido mientras aprendemos podemos utilizar var_dump($articulo).

También podemos guardar una lista como ['Linux', 'PHP', 'MySQL'], cuyas claves numéricas empiezan en cero. Los arrays de PHP admiten más operaciones, pero por ahora basta con guardar varios datos y recuperar uno de ellos.

Un objeto es otra forma de trabajar con datos y comportamiento. No es simplemente un array con otro nombre. Las propiedades y los métodos se organizarán alrededor de una clase. No necesitamos introducir aquí una clase completa para entender la asignación de variables.

Variable ausente y variable con null

Si una variable no ha sido definida, leerla puede producir un aviso en PHP 8. Es mejor asignar su valor antes de utilizarla, en lugar de asumir que siempre aparecerá como null sin consecuencias.

Podemos ver la diferencia entre existir y tener un valor no nulo:

<?php
$telefono = null;

var_dump(isset($telefono));
var_dump(array_key_exists('telefono', get_defined_vars()));

isset devuelve false, porque el valor es null. La segunda comprobación devuelve true, porque la variable sí está definida. No hace falta utilizar esta comprobación en cada línea del programa. Nos sirve para entender por qué ausencia y null no son exactamente la misma situación.

Si sólo queremos ver el tipo de un dato en PHP 8, también podemos usar get_debug_type. No cambia el valor de la variable ni valida por nosotros los datos de un formulario.

Un texto compuesto puede incluir una edad y un año de nacimiento, como en esta salida del navegador:

Salida de un programa PHP con una edad y un año de nacimiento

La resta entre un año y una edad sólo da una aproximación si no conocemos la fecha del cumpleaños. Para calcular una edad real harían falta fechas completas. El ejercicio siguiente se centra en mostrar los datos que ya conocemos.

Crear una página con nuestras variables

Creamos un archivo nuevo llamado variables.php dentro del proyecto de pruebas y copiamos este ejemplo completo:

<?php
$titulo = 'Mi primera página con variables';
$nombre = 'Lucía';
$edad = 25;
$intereses = ['Linux', 'PHP'];
$mensaje = $nombre . ' tiene ' . $edad . ' años.';
?>
<!doctype html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <title><?= htmlspecialchars($titulo, ENT_QUOTES, 'UTF-8') ?></title>
</head>
<body>
    <h1><?= htmlspecialchars($titulo, ENT_QUOTES, 'UTF-8') ?></h1>
    <p><?= htmlspecialchars($mensaje, ENT_QUOTES, 'UTF-8') ?></p>
    <p>Primer interés: <?= htmlspecialchars($intereses[0], ENT_QUOTES, 'UTF-8') ?></p>
</body>
</html>

<?= muestra el resultado de una expresión. htmlspecialchars prepara el texto para insertarlo en este contexto HTML, evitando que caracteres como < se interpreten como etiquetas. No es una protección genérica para SQL, JavaScript o cualquier otro contexto. Su documentación describe las conversiones que realiza.

Abrimos la página a través de nuestro entorno PHP, no haciendo doble clic en el archivo como si fuera un HTML estático. Si sólo tenemos el intérprete de terminal, ejecutar php variables.php permite revisar el HTML que genera, aunque no lo dibuja como un navegador.

Como ejercicio cambiamos el nombre, la edad y el primer interés. El mensaje debe actualizarse sin que tengamos que modificar el párrafo HTML a mano. Después probamos a poner un nombre con & o con un signo < para observar cómo se representa en la salida.

Ya tenemos una página que utiliza los datos en lugar de escribir el mismo texto en todas partes. Podemos continuar con la tercera parte del curso, sobre constantes. Si algún ejemplo no te funciona, deja el mensaje concreto y la versión de PHP, que así podremos distinguir un error del código de un problema del entorno.

Sergio Almela

Senior Software Engineer con más de diez años de experiencia. Escribo sobre Linux, software libre, backend, arquitectura, rendimiento, testing e IA aplicada al desarrollo.

Ver todas las entradas de Sergio Almela →

Un comentario en «Variables y tipos de datos en PHP: ejemplos para empezar»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *