Manual de PHP: Tipos de Datos

De Foros del Web

Contenido


PHP soporta diferentes tipos de datos, los cuáles cumplen un rol específico dentro de nuestros programas. Revisemos brevemente los más conocidos:

String: Datos tipo texto

Los datos tipo string son colecciones ordenadas de datos binarios, estos pueden ser datos tipo texto, que pueden incluir caracteres alfanuméricos, signos, espacios, etc. No hay límite en la longitud de este tipo de datos, y su finalidad es transmitir información textual, como una oración, un párrafo, un texto entero, el contenido de una imagen y hasta el contenido de una grabación de sonido. Existen varias formas de definirlos en el código, la más conocida y usada es encerrar el texto entre comillas (simples o dobles), pero también existen los formatos HEREDOC y NOWDOC:

echo "Este es un dato tipo string";
 
$variable = 'También pueden ser asignados a una variable';
 
$hereDoc = <<<HD
Este tambien es un dato tipo string
HD;
 
$nowDoc = <<<'ND'
Continuamos con el dato tipo string
ND;

Escape de caracteres

Un dato tipo texto, como ya dijimos, puede contener cualquier caracter, y debe ser delimitado por comillas simples o dobles. Un dolor de cabeza frecuente para muchos desarrolladores es la necesidad de imprimir un texto que contiene ambos tipos de comillas. Si delimitamos nuestro texto con comillas simples, entonces tendremos un problema a la hora de querer incluir una comilla simple textual dentro de nuestro texto, sin que esto indique el fin de la cadena. Para solucionar esto podemos escapar esa comilla simple que queremos que sea interpretada textualmente. Para escapar un caracter debemos precederlo por una barra invertida (\)

Veamos un ejemplo:

$texto = 'Nuestro foro se llama \'Foros del Web\' y ahora tiene un wiki!';
 
echo $texto; // Imprime: Nuestro foro se llama 'Foros del Web' y ahora tiene un wiki!

Al usar una barra invertida delante de la comilla simple, le indicamos al intérprete PHP que ese caracter debe ser tomado textualmente y no como el final de la cadena. Intentar escapar cualquier otro caracter hará que la barra invertida sea tomada también textualmente.

Uso de comillas dobles

Las cadenas se pueden delimitar usando comillas simples y dobles, pero no se comportan de igual manera. El uso de comillas dobles tiene una característica adicional: Las variables incluídas en ese texto son procesadas y reemplazadas por su valor. Veamos el siguiente ejemplo:

$nombre = "Marco Madueño"; // Recordemos que los datos tipo texto pueden contener cualquier caracter
 
echo "Bienvenido, \"$nombre\""; // Imprime: Bienvenido, "Marco Madueño"

Como ves, al usar comillas dobles, al igual que con las simples, podemos también escaparlas cuando queramos imprimirlas textualmente. Y adicionalmente, si queremos imprimir el signo de dólar sin que éste sea tomado como parte de un nombre de variable, también podemos escaparlo. Nota la diferencia entre usar comillas simples y dobles:

echo 'El valor de la variable \$nombre es $nombre'; // Imprime: El valor de la variable \$nombre es $nombre
echo "El valor de la variable \$nombre es $nombre"; // Imprime: El valor de la variable $nombre es Marco Madueño

Usando comillas dobles disponemos también de ciertos caracteres especiales. Los más usados son:

* \n : Salto de línea
* \r : Retorno de carro
* \t : Tabulación

echo "Este texto va en una línea \n Este va en la siguiente"; 
 
/* Imprime:
 
Este texto va en una línea 
 Este va en la siguiente
 
*/

OJO, el salto de línea \n no es un salto de línea HTML (como <br>). Si ejecutas el código anterior en tu navegador, verás que se imprime todo en una línea. La diferencia la verás si observas el código fuente generado. A lo largo de este manual verás la importancia de este salto de línea sin ninguna aparente utilidad prática.

HEREDOC y NOWDOC

Son sintaxis poco usadas, aunque pueden llegar a ser muy prácticas. Primero sepamos que HEREDOC es el equivalente de las comillas dobles, y NOWDOC el de las comillas simples. Estas dos sintaxis nos sirven para imprimir textos sin la necesidad de escapar las comillas. Son útiles a la hora de escribir o almacenar en variables textos largos, proceso engorroso si lo hacemos delimitando la cadena con comillas. Veamos la sintaxis de HEREDOC (Equivalente de las comillas dobles):

$variable = "Un valor";
 
$cadena = <<<FOO
Texto largo, de varias
líneas, que se imprime usando
la sintaxis HEREDOC.
 
Las variables aquí son interpretadas: $variable
FOO;
 
echo $cadena;

Y un ejemplo de NOWDOC

$variable = "Un valor";
 
$cadena = <<<'ABC'
Texto largo, de varias
líneas, que se imprime usando
la sintaxis NOWDOC.
 
Las variables aquí NO son interpretadas: $variable
ABC;
 
echo $cadena;

Hay que considerar algunas pautas. Para usar ambas sintaxis, debemos primero colocar el signo menor qué (<) 3 veces: <<<, seguidos inmediatamente de un identificador que conste de caracteres alfanuméricos y de subrayado, clásicamente de 3 letras, y luego un salto de línea. Es importante seguir esta secuencia y no agregar nada, como espacios, entre estos elementos. Para usar NOWDOC debemos encerrar el identificador entre comillas simples (ver ejemplo). Para cerrar el bloque, debemos dar un salto de línea, escribir el identificador tal y como lo pusimos al inicio (NOWDOC, ahora NO se incluye las comillas que se colocó al abrir el bloque), cerrar la instrucción (punto y coma ;) y luego dar un salto de línea. No se debe colocar espacios ni tabulaciones antes o después de esta secuencia pues de ser así el bloque de texto no será finalziado.

La ventaja principal de estas sintaxis, como ya dijimos, es la posibilidad de escribir bloques largos de texto sin la necesidad de escapar las comillas. Usando HEREDOC las variable y los caracteres especiales ya vistos seguirán siendo reemplazados por sus valores correspondientes, no así con NOWDOC.

Int, Float: Datos tipo numérico

Los datos tipo Int representan números enteros, positivos o negativos; mientras que los datos float o double representan cualquier número real. Estos datos pueden ser usados para realizar operaciones matemáticas simples o complejas. A diferencia de los datos tipo texto, no deben ser encapsulados en comillas. Veamos los siguientes ejemplos:

$a = 1; // Entero
$a = "1"; // Esto es un dato tipo string
$a = 5.45; // Float o Double
 
$b = 3 + 6; // Entero: 9
 
$d = ( ( $b / 3 ) + 5) * $c - 7;

Las operaciones usando datos numéricos siguen los mismos principios que para las matemáticas comunes.

Boolean: Datos tipo V/F

Los datos tipo boolean son indicadores de verdad o falsedad. Sólo pueden tomar el valor de true y false, y provienen generalmente del resultado de realizar alguna comparación o verificación:

$variable = true; // No es sensible a mayúsculas y minúsculas
$variable = false; // No es sensible a mayúsculas y minúsculas
 
$variable = ($dato1 == $dato2); // true si $dato1 es igual (==) a $dato2

Array: Usando matrices

Un array o arreglo es un conjunto de datos organizados en base a índices y valores, de tal manera que determinado índice dentro del array hace referencia a su valor, que puede ser también otro array. Puede ser usado de múltiples maneras. Para crear un array se usa la construcción array() de la siguiente forma: array(indice1 => valor1, indice2 => valor2, ...):

$var = array(
    1 => "Los índices pueden ser numéricos",
    "a" => 'o pueden ser textuales',
    "fdw" => 1, //Los valores tambien pueden ser números
    "letras" => array(1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd', 5 => 'e'), // arrays anidados
    "bool" => true // O booleanos
); // Los saltos de línea no son necesario, pero ayudan a una mejor visualización del código

Para acceder a los elementos de un array se usa el nombre de la variable que lo contiene, seguido del índice del elemento deseado entre corchetes []:

echo $var['a']; // Imprime: o pueden ser textuales
echo $var['letras'][2]; // Imprime: b

Los valores pueden ser de cualquiera de los tipos que soporta PHP. No es necesario indicar los índices, y en ese caso se usarán valores enteros tomando como base el máximo valor entero ya existente:

$arreglo = array(3 => "c", "d", "e", "f");
 
echo $arreglo[5]; // Imprime: e

Analiza cada uno de los ejemplos hasta que entiendas el funcionamiento básico de los arrays. Para modificar los elementos de un array lo puedes hacer igual que como si fueran variables:

$arreglo = array("fruta1" => "pera", "fruta2" => "manzana", "fruta3" => "banana");
 
echo $arreglo['fruta2']; // Imprime: manzana
 
$arreglo['fruta2'] = 'naranja';
 
echo $arreglo['fruta2']; // Imprime: naranja


NULL: Datos que no existen

NULL (insensible a mayúsculas/minúsculas) es un tipo de dato muy especial, que hace referencia a un valor inexistente. Vale decir, variables tipo null son variables que no han sido creadas y no existen en el script. Se usa, por ejemplo, para eliminar variable ya creadas:

$variable = "Existe";
 
// La eliminamos
$variable = null;
 
// Ahora $variable ya no existe en el script

Para eliminar variables podemos simplemente asignarles un valor NULL, como ya dijimos, o en su defecto usar la función unset(). Asignarles un espacio en blanco no elimina la variable:

// Formas CORRECTAS de eliminar una variable
$variable = null;
unset($variable);
 
// Formas INCORRECTAS de eliminar una variable
$variable = " ";
$variable = "";
$variable = 0;
$variable = false;
$variable;

Otros tipos

Existen dos tipos más de datos: Los recursos y los objetos. Éstos serán vistos posteriormente, ya que requieren un mayor nivel del conocimiento de PHP y escapan de los objetivos de cualquier tutorial básico.

Este artículo es parte del Manual de PHP.






-- Okram 04 Jul 2009

Herramientas personales