Una variable puede no tener ningún valor asignado, es decir, puede estar sin inicializar, ya que en ese caso PHP le asigna un valor por defecto dependiendo de su tipo, tal como veremos más adelante al estudiar los tipos de datos de PHP.
La asignación de una variable se realiza por valor:
$var1 = "Mis datos"; // asignación de una cadena $var2 = 3; // asignación de un número entero $var3 = $var2; // asignación desde una variable
La asignación por valor significa que el resultado de la expresión que está a la derecha del signo igual se copia (asigna) en la dirección de memoria de la variable que está a la izquierda del signo igual.
También es posible asignar variables por referencia (&) que significa que la dirección de variable que está a la derecha del signo igual se asigna a la variable de la izquierda. En este caso sólo lo que se tiene es una variable con dos nombres, como un alias.
$var3 = "Hola"; $var4 = &$var3; //$var4 es un alias de $var3 echo $var4; // imprimirá Hola $var4 = "PHP"; echo $var3; // imprimirá PHP
Sólo se puede hacer referencia a una variable con nombre, no es posible definir una referencia a un valor.
El valor de una variable es el valor de su asignación más reciente. |
Error común: las variables no tienen el valor esperado
PHP considera que las diferencias en mayúsculas y minúsculas hacen que dos variables con el mismo nombre sean distintas. Por ejemplo, en este código quizá nos sorprendamos que el programa no hace lo que tienen que hacer y el motivo es simple: asignamos una variable y consultamos otra (pensando que es la misma variable).
$miVar = 5; ... if ($MiVar = = 5) { ...
Variables sin asignación
Muchos lenguajes de programación que realizan un tratamiento estricto de los datos no permiten utilizar variables antes de su inicialización, otros lenguajes más permisivos lo permiten y eso a veces es una fuente de problemas. PHP nos permite utilizar variables sin asignar valor pero tenemos la opción de que nos avise cuando lo hacemos, de esta manera podemos asegurarnos que en nuestro código utilicemos por distracción una variable a la que no le hemos asignado un valor.
Para que PHP genere un mensaje de error podemos hacerlo de dos maneras:
- Incluyendo la opción en php.ini, lo que hace extensivo el control a todos los programas que se ejecuten en ese servidor
- Incluyendo la sentencia error_reporting(E_ALL) al inicio de nuestro código, esto tiene validez sólo para el archivo en donde aparezca la sentencia.
<?php error_reporting(E_ALL); print "test<br>"; $a = $b + 5; ?>
Este código genera esta salida:
test Notice: Undefined variable: b in C:\AppServ\www\PHP6\test1.php on line 4
¿Cómo sabe PHP de qué tipo es una variable sin asignar?
Hemos dicho anteriormente que PHP asigna un valor predeterminado a las variables que no tienen asignado un valor. Bien, pero también hemos visto que para definir una variable no hace falta definir su tipo. Por ejemplo, ¿cuál será el valor de la variable $b del ejemplo anterior ?
La respuesta la da el contexto en el que se utiliza la variable. Si la variable $b se usa en una operación aritmética tendrá un valor predeterminado de cero, pero si se utiliza en un contexto en el que se espera una cadena se la considerará como una cadena vacía.
Más adelante estudiaremos el uso de ciertas funciones que nos permiten comprobar si una variable tiene un valor asignado: función isset(). También es posible desasignar el valor de una variable mediante la función unset().
La recomendación es depurar el programa para que no se utilicen variables antes de que tengan un valor asignado. |