Variables en PHP

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 tema dentro del Manual de PHP, explicando los tipos de variables que podremos encontrar.

Anteriormente en DesarrolloWeb.com, en el manual de páginas dinámicas, ya habíamos introducido el concepto de variable. En el capítulo anterior comentábamos que, para PHP, las variables eran definidas anteponiendo el símbolo dólar ($) al nombre de la variable que estábamos definiendo.

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

Variables numéricas
Almacenan cifras
Enteros $entero=2002; Numeros sin decimales
Real $real=3.14159; Numeros con o sin decimal

Variables alfanuméricas
Almacenan textos compuestos de números y/o cifras
Cadenas Almacenan variables alfanuméricas $cadena="Hola amigo";

Tablas
Almacenan series de informaciones numéricas y/o alfanuméricas
Arrays Son las variables que guardan las tablas $sentido[1]="ver";
$sentido[2]="tocar";
$sentido[3]="oir";
$sentido[4]="gusto";
$sentido[5]="oler";

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.

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:

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

Ejecutar script

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.

Sin embargo, en contraste, hay que tener cuidado en no cambiar mayúsculas por minúsculas ya que, en este sentido, PHP es sensible. Conviene por lo tanto trabajar ya sea siempre en mayúsculas o siempre en minúsculas para evitar este tipo de malentendidos a veces muy difíciles de localizar.

Variables asignadas por referencia

En PHP también podemos asignar variables por referencia. En ese caso no se les asigna un valor, sino otra variable, de tal modo que las dos varialbles 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

Redactor de DesarrolloWeb.com

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