W3docs

Manejo de Variables en PHP

Aprende a crear, inspeccionar, copiar y eliminar variables en PHP: isset, gettype, settype, referencias y variables variables.

Introducción

El manejo de variables es el conjunto de técnicas que se utilizan para crear, inspeccionar, copiar y eliminar los valores con los que trabaja un script PHP. Esta página va más allá de la simple asignación de un valor: abarca la verificación de si una variable existe (isset), la búsqueda y el cambio de su tipo (gettype / settype), la creación de referencias y las características más dinámicas que ofrece PHP: variables variables y funciones variables.

Si nunca has declarado una variable PHP, comienza con Variables PHP y Tipos de Datos PHP, y luego vuelve aquí para conocer las técnicas de manejo.

Declarar y asignar variables

En PHP, el nombre de una variable comienza con un signo de dólar ($) seguido de una letra o guion bajo. No se declara un tipo: PHP lo infiere a partir del valor que se asigna con el operador =.

<?php
$name  = "John";   // string
$age   = 30;        // integer
$price = 19.99;     // float
$active = true;     // boolean

PHP es dinámicamente tipado: la misma variable puede contener una cadena ahora y un número después. La variable simplemente adopta el tipo de lo que se asignó por última vez.

Interpolación de cadenas

Dentro de cadenas con comillas dobles (y heredocs), PHP reemplaza una variable con su valor. Las cadenas con comillas simples se toman literalmente y no realizan interpolación.

php— editable, runs on the server

Verificar y eliminar variables

Antes de leer una variable que puede no existir, compruébala. Estas tres funciones son el núcleo del manejo seguro de variables:

FunciónDevuelve true cuando...
isset($var)la variable existe y no es null
empty($var)la variable no está definida, es null, 0, "", "0", false o []
unset($var)(sin retorno) destruye la variable para que isset devuelva false
<?php
$user = null;
var_dump(isset($user));   // bool(false) — null counts as "not set"

$count = 0;
var_dump(empty($count));  // bool(true)  — 0 is "empty"

$temp = 10;
unset($temp);
var_dump(isset($temp));   // bool(false) — destroyed

isset es la función de guarda que se usa con más frecuencia, especialmente con superglobales como $_GET y $_POST donde una clave puede faltar.

Inspeccionar y cambiar tipos

Dado que PHP infiere los tipos, a veces es necesario preguntar qué tipo tiene actualmente un valor, o forzar una conversión.

<?php
$price = 19.99;
echo gettype($price);     // double  (PHP's name for float)

$input = "42";
settype($input, "integer");
echo $input + 8;          // 50 — now a real integer, not the string "42"

Usa gettype para obtener un nombre de tipo legible y settype (o un cast como (int)) para convertir en el lugar. Para comparaciones, prefiere las funciones que tienen en cuenta el tipo: is_int(), is_string(), is_array(), entre otras.

Manejo avanzado de variables

Una vez que los conceptos básicos son cómodos, PHP ofrece tres técnicas más dinámicas. Úsalas con moderación: son poderosas, pero pueden perjudicar la legibilidad.

Referencias de variables

Una referencia hace que dos nombres apunten al mismo valor subyacente. Se asigna con =& y cualquier cambio a través de un nombre es visible a través del otro.

<?php
$count = 1;
$alias =& $count;   // $alias is now another name for $count
$alias = 5;
echo $count;        // 5 — changed through the reference

Las referencias son más importantes cuando se pasan argumentos a funciones por referencia (function f(&$x)), permitiendo que la función modifique la variable del llamador.

Variables variables

Una variable variable usa el valor de una variable como nombre de otra. La sintaxis $$ lee la variable interna para construir el nombre externo.

<?php
$var = "greeting";
$$var = "Hello";     // creates $greeting
echo $greeting;      // Hello

Esto resulta útil ocasionalmente para nombres de campos dinámicos, pero un array asociativo es casi siempre más claro y seguro.

Funciones variables

Si una variable de tipo string contiene el nombre de una función, añadir () llama a esa función de forma dinámica.

<?php
$fn = "strlen";
echo $fn("Hello World");   // 11

Esto permite crear tablas de despacho simples y callbacks. PHP moderno generalmente prefiere callables de primera clase o closures, pero las funciones variables siguen siendo válidas y rápidas.

Buenas prácticas

  • Usa nombres significativos. $counter o $totalPrice documenta la intención mucho mejor que $x o $tmp.
  • Inicializa antes de usar. Leer una variable no definida genera una advertencia; establece un valor predeterminado o usa un guardia con isset().
  • Evita los globales. Pasa los valores como argumentos de función o encapsula el estado en objetos en lugar de depender de global. Consulta Ámbito de Variables para entender por qué importa el aislamiento de ámbito.
  • Prefiere arrays sobre variables variables. Son más fáciles de iterar, depurar y razonar.
  • Usa declaraciones de tipo. Los parámetros tipados (function setAge(int $age)) detectan errores de forma temprana y hacen que el código se documente a sí mismo.

Resumen

El manejo de variables en PHP va más allá de la asignación: incluye verificar la existencia con isset/empty, eliminar valores con unset, inspeccionar y convertir tipos con gettype/settype, y las herramientas dinámicas: referencias, variables variables y funciones variables. Apóyate en las técnicas simples y explícitas en el día a día, y reserva las dinámicas para los casos excepcionales que realmente las necesiten.

Practice

Práctica
En PHP, ¿cuál de las siguientes es/son formas de manejar variables?
En PHP, ¿cuál de las siguientes es/son formas de manejar variables?

Practice

Práctica
En PHP, ¿cuál de las siguientes es/son formas de manejar variables?
En PHP, ¿cuál de las siguientes es/son formas de manejar variables?
Was this page helpful?