Variables en PHP

  • Por
  • y  
Tipos de variables, características generales y aspectos específicos de PHP de estos elementos básicos de la programación.

Las variables son uno de los primeros temas que tenemos que conocer en PHP y en la mayoría de los lenguajes de programación. Así que a continuación vamos a tratar este asunto dentro del Manual de PHP, explicando también los tipos de datos que podremos encontrar en el lenguaje.

Anteriormente en DesarrolloWeb.com, en el manual de páginas dinámicas, ya habíamos introducido el concepto de variable. No obstante podemos entender una variable como un dato almacenado en una referencia. Técnicamente una variable apunta a una posición de la memoria, donde se almacena un dato. Las variables se utilizan en los lenguajes de programación para darle un nombre a ese dato, a esa posición de la memoria, de manera que se pueda entender o saber lo que contiene. Al final, esos datos almacenados son los que se utilizan para conseguir los resultados de los programas.

Por su parte, un tipo de datos es la característica de un dato almacenado. Es decir, si es de una forma concreta, numérica, alfanumérica, etc. Todos los lenguajes tipan de alguna manera los datos, aunque algunos son más permisivos que otros a la hora de realizar operaciones con variables de distintos tipos.

Nota: Si tienes cualquier duda sobre lo que son las variables o los tipos de datos te recomendamos asistir a la grabación de esta excelente clase donde te lo explican de una manera detallada. Variables y tipos en los lenguajes de programación.

$ en el nombre de las variables

En el capítulo anterior ya comentábamos que, para PHP, las variables eran definidas comenzando siempre por el símbolo dólar ($). Es quizás una de las características más fuertes del lenguaje. Al ver el dólar al principio del nombre de cualquier variable podrás rápidamente deducir que tal código está escrito en PHP.

Las variables siempre deberían tener un nombre descriptivo sobre lo que ellas van a almacenar. Por tanto, al nombre de una variable en PHP le colocaremos el símbolo $.

<?php $total = 300 ?>

Tipos de datos en PHP

Dependiendo de la información que contenga, una variable puede ser considerada de uno u otro tipo:

Variables numéricas

Este tipo de variables almacena cifras, números, que pueden tener dos clasificaciones distintas:

  • Enteros $entero=2002; Numeros sin decimales
  • Reales $real=3.14159; Numeros con o sin decimal

Variables alfanuméricas

Este tipo de datos almacena textos compuestos, cadenas de caracteres, que pueden contener letras, símbolos y números o cifras.

  • Cadenas Almacenan variables alfanuméricas $cadena="Hola amigo";

Boleanas

Este tipo de variables almacena un valor lógico, que puede valer verdadero o falso. Es muy común en la programación este tipo de variables boleanas.

  • Boleano verdadero $verdadero = true;
  • Boleano falso $falso = false;

Matrices, tablas o arrays

Es un tipo de datos en el que, en lugar de tener un dato, podemos almacenar un conjunto de ellos, a los que accedemos a través de índices. Cada una de las casillas de un array o los datos de nuestra matriz a su vez almancenan informaciones numéricas y/o alfanuméricas, pudiendo mezclar tipos de variables de manera arbitraria entre sus distintas casillas.

  • Arrays Son las variables que guardan las tablas
    $sentido[1]="ver";
    $sentido[2]="tocar";
    $sentido[3]="oir";
    $sentido[4]="gusto";
    $sentido[5]="oler";

Más adelante encontrarás capítulos enteros dedicados a los arrays en PHP.

Objetos

Se trata de conjuntos de variables y funciones asociadas. Presentan una complejidad mayor que las variables vistas hasta ahora pero su utilidad es más que interesante. Entraremos con detalle en los objetos más adelante, ya que su complejidad hace difícil explicarlas ahora.

PHP tiene tipado dinámico

A diferencia de otros lenguajes, PHP posee una gran flexibilidad a la hora de operar con variables. En efecto, cuando definimos una variable asignándole un valor, el ordenador le atribuye un tipo. Si por ejemplo definimos una variable entre comillas, la variable será considerada de tipo cadena:

$variable="5"; //esto es una cadena

Sin embargo, si pedimos en nuestro script realizar una operación matemática con esta variable, no obtendremos un mensaje de error sino que la variable cadena será asimilada a numérica (PHP hará todo lo posible por interpretar nuestra operación, aunque técnicamente no tenga mucho sentido hacer determinadas operaciones):

<?
$cadena="5"; //esto es una cadena
$entero=3; //esto es un entero
echo $cadena+$entero
?>

Este script dará como resultado "8". La variable cadena ha sido asimilada en entero (aunque su tipo sigue siendo cadena) para poder realizar la operación matemática. Del mismo modo, podemos operar entre variables tipo entero y real. No debemos preocuparnos de nada, PHP se encarga durante la ejecución de interpretar el tipo de variable necesario para el buen funcionamiento del programa.

Nota: Los lenguajes como PHP que permiten mayor flexibilidad en los tipos de las variables se dicen que tienen tipado dinámico. En ellos una variable puede tener distintos tipos a lo largo de su vida, es decir, a medida que el programa se ejecuta una variable podrá cambiar de tipo. Generalmente durante el procesamiento del programa se va infiriendo los tipos de las variables, en tiempo de ejecución, según el tipo de datos del valor que se le asigna o las operaciones que se realizan sobre ellas. Otra manera de referirse a este tipo de lenguajes de programación es "débilmente tipados", aunque esta segunda denominación es menos correcta, porque puede inducir a una comprensión errónea, ya que en la realidad las variables siempre tienen tipos, aunque estos puedan variar con el tiempo.

PHP es sensible a las mayúsculas y minúsculas

PHP entiende de manera distinta las mayúsculas y minúsculas. En el caso del nombre que le damos a una variable, no es lo mismo escribirla con mayúscula o minúscula, o mezclando mayúsculas y minúsculas de distinta manera. Por tanto, hay que tener mucho cuidado a la hora de escribir los nombres de variables, y no cambiar mayúsculas por minúsculas, ya que PHP entenderá dos variables distintas aunque nosotros podamos intentar referirnos a la misma. Cuando estamos empezando quizás sea un buen consejo trabajar asignando nombres a las variables siempre en minúsculas, para evitar este tipo de malentendidos a veces muy difíciles de localizar.

En el caso que tengamos una variable con un nombre compuesto de varias palabras, en PHP es una práctica común colocar la variable toda en minúscula y separar las palabras por guiones bajos.

<?php $mi_variable_bonita = "me gusta PHP" ?>

Variables asignadas por referencia

En PHP también podemos asignar variables por referencia, aunque a decir verdad no es una caracerística que se use mucho. En ese caso no se les asigna un valor, sino otra variable, de tal modo que las dos variables comparten espacio en memoria para el mismo dato.

La notación para asignar por referencia es colocar un "&" antes del nombre de la variable.

<?php 
$foo = 'Bob'; // Asigna el valor 'Bob' a $foo 
$bar = &$foo; // Referencia $foo vía $bar. 
$bar = "Mi nombre es $bar"; // Modifica $bar... 
echo $foo; // $foo también se modifica. 
echo $bar; 
?>

Esto dará como resultado la visualización dos veces del string "Mi nombre es Bob". Algo como:

Mi nombre es BobMi nombre es Bob

Autor

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

ZequeZ

15/9/2007
Muy bueno, gracias, era verdad eso que decian que si aprendias por lo menos un lenguaje, loes demas eran mas faciles!!

Yo eprendi un poco de batch, y esto es bastante parecido con el tema de las variables ^^ y sobre todo el echo =P falta que tengamos que poner @echo off al principio xD ^^

Mark

20/9/2007
la verdad muy buen tuto
grax apenas me estoy aprendiendo a
usar el visual, pero me
ha llamado la atencion
este espero aprendenr

Néstor Edo.

15/7/2009
Un comentario sobre el Script...
De todas maneras si lo que quieres es colocar el 5 y a continución el 3, es decir, mostrar 53 en pantalla, lo puedes hacer, cambiando el operador + (mas) por el operador . (punto).
Esto lo que hace es concatenar (poner una al lado de la otra) las variables.

Script que muestra 53 en pantalla:
<?
$cadena="5"; //esto es una cadena
$entero=3; //esto es un entero
echo $cadena.$entero; //esto concatena las variables
?>

alberto

16/7/2009
Tutorial
Está bueno este tutorial, sólo se necesita un par de los que dejan los avestrus para aprender

esteban

20/7/2009
muy bien
muy bueno el tutorial es muy entendible

Yen

28/4/2010
No entendi muy bien el comportamiento de la referencia a variables
Que tal. La verdad no entendi por que a la hora de ejecutar el script se repite el mensaje "MinombreesBobMinombreesBob". En las dos primeras 2 lineas no tengo problema, primero se declara el valor de la variable $foo='Bob' y posteriormente se declara que la variable $bar haga referencia al valor de la variable $foo. Pero en la linea donde se cambia el valor de la variable $bar (el valor al que hacia referencia) por la cadena "Mi nombre es $bar" porque php sigue tomando dentro de esta cadena que $bar tiene como valor la referencia al valor de la variable $foo??? y porque a la hora que se pide que se muestre el valor de la variable $foo, este tiene como valor "Mi nombre es Bob", el valor de $foo debe ser "Bob"???

Kelvin

25/5/2010
Lo que pasa es que son la misma referencia (la misma variable)
Respondiendo al comentario anterior, hay que decir que cuando se crea una variable como referencia a otra $bar = &amp; $foo, estas variables pasan a ser la misma, si cambio una entonces automáticamente cambia la otra. Si cambio $foo cambia $bar y si cambio $bar cambia $foo. Ambas apuntan a la misma dirección de memoria. Hasta Luego

jonathan

18/6/2010
programacion php
dado 3 numeros cual es le mayor
es programcion php

Andy Torrealba

03/7/2010
PHP
EL PHP debería evolucionar a un entorno Visual para evitar algo de código nativo.

alfonso

03/10/2010
no comprendo como ejecuto el codigo
soy un poco novato i he probado a ejecutarlo en un archivo .php abriendolo con el navegador i no consigo que funcione, ni tampoco implementando el codigo en un .html, no se que hay que hacer para ejecutarlo :S

Joan

28/1/2011
Fantastico turorial
Gracias por el tutorial... estoy empezando y me parece muy útil

u

CAMILO RUIZ

07/3/2011
explicacion de asignacion
estoy de acuerdo con un comentario anterior de que por que la variable $foo va a tomar el valor de $bar si nunca se realiza esta asignacion.
por favor si alguen me puede explicar ya que en mi concepto la respuesta tiene que ser
Bobmi nombre es Bob

Jorge

21/3/2011
Variable refernciada
Ante todo muchas gracias a desarrollo web por este valioso aporte. Con referencia a la pregunta sobre la variable referenciada pienso que al referenciar $bar = &$foo
se modifican ambas, con solo decir que $bar = "Mi nombre es $bar; tambien automaticamente se aplica a $foo ya que esta referenciada.

eloyvl

11/10/2011
Indicación indírecta de variables
Apreciados amigos, les comento la siguiente problemas relacionados con la asignación de indicación de variables de forma indirecta:

$x= 'hola';
$b= 'x';
print $$b; //imprime 'Hola'.

Esto funciona perfectamente el problema lo tengo cuando lo hago con una array y específicamente cuando lo redirijo a una subarray.

Pongo un ejemplo:

<?php
$aMenu= array(
array(
'DeliriumSofo','',
array('Quines somos',''),
array('Donde estamos','')
),
array(
'Desarrolo de programas','',
array('Medicina',''),
array('Comercial','')
),
array('Reparaciones','')
);

$a= "aMenu";
$b= "aMenu[0]";

print_r($aMenu[0]); //Correcto
print '<br>------<br>';
print_r( $$a); //Correcto
print '<br>------<br>';
print_r ($$b); //error

?>

¿Tiene solución?.
Gracias

Eloy

wilson tovar

31/10/2011
concatenar
hola a todos, quiero consultar como puedo hacer para concatenar una variable que adquiere su valor por metodo get, y el valor ingresado en un text, ejemplo el valor de variable es el año 2011 y en el text ingreso el nuemro 25, quiero que se vea 252011, y poder cargar este valor a la base de datos. gracias

aneLRojas

02/12/2011
ayuenme por fis es URGENTE y no se que esta mal :(
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<?php
include_once('"librerias/conection.php"'); //conectamos con la base de datos
$link = Conectarse();
if(isset($_POST["matricula"]) && isset($_POST["fechanacimiento"]))
{
$matricula = $_POST["matricula"];;
$fechanacimiento = $_POST["fechanacimiento"];;
$result = mysql_query("SELECT * FROM consulta_alumno WHERE matricula='$matricula' AND fechanacimiento='$fechanacimiento'"); //consultamos BD
if($row = mysql_fetch_row($result_matricula))
{
if($row["matricula"] == $matricula) //comprobamos si coinciden las matriculas
{
echo "&estatus=ok&"; //las matriculas coinciden
}
else
{
echo "&estatus=&matricula"; //matricula incorrecta
}}
else
{
echo "&estatus=nofechanacimiento&"; //El alumno no se encuentra en la BD
}
mysql_free_result($result_matricula);
}
mysql_close();
?>












<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">












<title>ingreso de datos</title>
</head>


<body style="width: 958px;">







<table style="color: rgb(255, 255, 255); background-color: rgb(255, 204, 0); text-align: left; margin-left: auto; margin-right: auto; width: 1336px; height: 107px;">







<tbody>







<tr>







<td style="background-color: rgb(255, 204, 0);"><span style="color: rgb(255, 255, 255);"><big><span style="font-family: Arial; color: rgb(0, 0, 153);"><img style="width: 64px; height: 98px;" alt="" src="img/logocecyte.jpg" align="middle"></span></big></span><big><span style="font-family: Arial; color: rgb(0, 0, 153);">&nbsp;&nbsp;</span></big><big><span style="font-family: Arial; color: rgb(0, 0, 153);"><big style="font-weight: bold;">Selector Automatizado De Actividades Culturales y Deportivas (SAACD)</big></span></big><br>







</td>







</tr>













</tbody>
</table>







<br>

<br>

<br>

<br>







<big>





</big><big>





</big><big>





</big><big>





</big><big>









</big>
<big>
</big>
<table style="text-align: left; font-family: Arial;">

<tbody>

<tr>

<td style="background-color: rgb(255, 255, 255);"><big>Ingresa
tus datos para consultar tus resultados</big></td>

</tr>


</tbody>
</table>







<br>







<table style="text-align: left; width: 395px; height: 47px;">







<tbody>







<tr>







<td style="font-family: Arial; text-align: center;">Matricula:</td>







<td> <input name="matricula" type="text">
</td>







</tr>













</tbody>
</table>







<br>






<br>







<select name="dia">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>

</select>







&nbsp;
<select name="mes">
<option value="1">enero</option>
<option value="2">febrero</option>
<option value="3">marzo</option>
<option value="4">abril</option>
<option value="5">mayo</option>
<option value="6">junio</option>
<option value="7">julio</option>
<option value="8">agosto</option>
<option value="9">septiembre</option>
<option value="10">octubre</option>
<option value="11">noviembre</option>
<option value="12">diciembre</option>
</select>







<select name="a&ntilde;o">
<option value="1">1992</option>
<option value="2">1993</option>
<option value="3">1994</option>
<option value="4">1995</option>
<option value="5">1996</option>
<option value="6">1997</option>
<option value="7">1998</option>
<option value="8">1999</option>
<option value="9">2000</option>
<option value="10">2001</option>
<option value="11">2002</option>
</select>







<br>







<br>







<br>







<table style="text-align: left; width: 100%;">







<tbody>







<tr>







<td style="width: 268px;"> <input name="submit" value="entrar" type="submit"> </td>







<td style="width: 845px;"> <input name="submit" value="menu principal" type="submit"> </td>







</tr>













</tbody>
</table>







<br>







<br>

<br>

<br>

<br>

<br>

<br>

<br>







<table style="text-align: left; width: 1031px; height: 130px;">







<tbody>







<tr>







<td style="text-align: right; background-color: rgb(0, 0, 153);">
<span style="font-family: Arial;">&nbsp;</span><span style="color: rgb(255, 255, 255);"><big style="font-family: Arial;"><big><small>Derechos Reservados Cecyte Playa del Carmen</small></big></big> </span><span style="color: rgb(255, 255, 255);"></span><span style="color: rgb(255, 255, 255);"> &nbsp;</span><span style="color: rgb(255, 255, 255);"><big><span style="font-family: Arial; color: rgb(0, 0, 153);"><img style="width: 64px; height: 98px;" alt="" src="img/logocecyte.jpg" align="middle"></span></big></span><span style="color: rgb(255, 255, 255);"></span><span style="color: rgb(255, 255, 255);"></span><span style="color: rgb(255, 255, 255);">&nbsp;</span></td>







</tr>













</tbody>
</table>







</body>
</html>

ArcDark

07/3/2012
curso muy interesante PHP mr gustaria saber mas
PHP es interesante poco a poco aprendo, quisiera me ayudaran un poco mas con ejemplos asi practicaria mas y le pondria mas dedicacion :) bueno si tuviera para hacer mas descargas seria mejor para estar revisando los tutoriales :D gracias por su aporte es muy bueno

dayana_morales

09/5/2012
En las variables se usan parametros al igual que las funciones?????
Estoy empezando a programar y en varios script he visto algo como esto
($var ["isbn"]). No entiendo ese isbn dentro de los corchetes, se que la funciones tienen parametros pero no se si las variables tambien los usan y si es asi me podrian explicar cm usarlos por favor...

Amanda_88

25/2/2013
Última parte del artículo
Al final, me he hecho un lío con el tema de Bob y su nombre,¿no sale BobMi nombre es Bob? en vez de Mi nombre es BobMi nombre es Bob..? Porque sino no lo pillo xP

saintseiyaomega

22/3/2014
arrays en php
Escribir un programa en PHP donde se ingresen 15 números enteros dentro de un arreglo ........... como quedaria este ejercicio amigos

andres

29/9/2015
sii
http://www.acugd.com/2JTP55x0F