El término «tipos de datos» se refiere a la clasificación de los datos en distintas categorías. PHP tiene un total de ocho tipos de datos que usamos para construir nuestras variables:

  • Números enteros: números enteros, sin punto decimal, como 4195.
  • Dobles: números de coma flotante como 3,14159 o 49,1.
  • Booleanos: solo tienen dos valores posibles, verdadero o falso.
  • NULL − Tipo especial que solo tiene un valor: NULL.
  • Cadenas – Secuencias de caracteres, como ‘PHP soporta operaciones de cadena’.
  • Matrices: colecciones con nombre e indexadas de otros valores.
  • Objetos: instancias de clases definidas por el programador, que pueden empaquetar otros tipos de valores y funciones que son específicos de la clase.
  • Recursos: variables especiales que contienen referencias a recursos externos a PHP (como conexiones de bases de datos).

Los primeros cinco son tipos simples y los dos siguientes (matrices y objetos) son tipos compuestos. Los tipos compuestos pueden empaquetar otros valores arbitrarios de tipo arbitrario, mientras que los tipos simples no pueden.

En este capítulo, vamos a discutir en detalle sobre estos tipos de datos integrados de PHP.

Tipo de datos entero en PHP

Un número entero sin punto decimal (como 4195) es de tipo int en PHP. Los tipos de datos enteros son el tipo más simple. Corresponden a números enteros simples, tanto positivos como negativos.

  • Un int es un número del conjunto Z = {…, -2, -1, 0, 1, 2, …}.
  • Un int se puede representar en notación decimal (base 10), hexadecimal (base 16), octal (base 8) o binaria (base 2).

Para usar la notación octal, un número va precedido de «0o» o «0O». Para usar la notación hexadecimal, preceda el número con «0x». Para usar la notación binaria, preceda el número con «0b».

A continuación se presentan algunos ejemplos:

  • Entero decimal − 201, 4195, -15
  • Entero octal − 0010, 0O12, -0O21
  • Entero hexadecimal − 0x10, -0x100
  • Entero binario − 0b10101, -0b100

Los números enteros se pueden asignar a variables o se pueden usar en expresiones, como se muestra así:

$int_var=12345;
$another_int=-12345+12345;

Doble tipo de datos en PHP

Las variables dobles representan números de coma flotante (también conocidos como «flotantes», «dobles» o «números reales») que son los números con un componente fraccionario. El componente fraccionario sigue después del componente entero separado por el símbolo decimal (.)

Nota: Una variable doble puede ser positiva, negativa o cero.

$var1=1.55
$var2=-123.0

Notación de flotación científica

PHP también permite el uso de la notación científica para representar un número de coma flotante con más dígitos después del punto decimal. El símbolo «E» o «e» se utiliza para separar la parte entera y fraccionaria.

− 1.2e3,2.33e-4,7E-10,1.0E5

De forma predeterminada, los dobles se imprimen con el número mínimo de decimales necesarios. Echa un vistazo al siguiente ejemplo:

<?php
   $many = 2.2888800;
   $many_2 = 2.2111200;
   $few = $many + $many_2;

   print("$many + $many_2 = $few");
?>

Produce el siguiente resultado:

2.28888 + 2.21112 = 4.5

Tipo de datos booleano en PHP

El tipo bool solo tiene dos valores; puede ser Verdadero o Falso. El tipo bool se utiliza para expresar un valor de verdad.

$bool1=true;
$bool2=false;

También puede usar los valores enteros «1» y «0» para representar valores booleanos verdaderos y falsos:

$bool3=1;
$bool4=0;

Normalmente, el resultado de un operador que devuelve un valor bool se pasa a una estructura de control como if, while o do-while. Por ejemplo

if (TRUE)
   print("This will always print.");

else
   print("This will never print.");

Interpretación de otros tipos de datos como booleanos

A continuación, se muestra un conjunto de reglas que puede utilizar para interpretar otros tipos de datos como booleanos:

  • Si el valor es un número, entonces es False solo si el valor es igual a cero, de lo contrario, el valor es True.
  • Si el valor es una cadena, es False si la cadena está vacía (tiene cero caracteres) o es la cadena «0», y es True en caso contrario.
  • Los valores de tipo NULL son siempre False.
  • Si el valor es una matriz, es False si no contiene otros valores; De lo contrario, es cierto. Para un objeto, contener un valor significa tener una variable miembro a la que se le ha asignado un valor.
  • Los recursos válidos son verdaderos (aunque algunas funciones que devuelven recursos cuando se realizan correctamente devolverán FALSE cuando no se realicen correctamente).

Nota: No use double como booleanos.

Cada una de las siguientes variables tiene el valor de verdad incrustado en su nombre cuando se utiliza en un contexto booleano.

$true_num = 3 + 0.14159;
$true_str = "Tried and true"
$true_array[49] = "An array element";
$false_array = array();
$false_null = NULL;
$false_num = 999 - 999;
$false_str = "";

Tipo de datos de cadena en PHP

Una cadena es una secuencia de caracteres, por ejemplo, ‘PHP soporta operaciones de cadena’.

En PHP, un carácter es lo mismo que un byte. Significa que PHP solo admite un conjunto de 256 caracteres y, por lo tanto, no ofrece soporte nativo de Unicode.

PHP soporta la formación de cadenas entre comillas simples y dobles. Las dos representaciones siguientes son válidas en PHP:

$string_1="This is a string in double quotes";$string_2='This is a somewhat longer, singly quoted string';

Aquí hay algunos ejemplos más de tipo de cadena:

$string_39="This string has thirty-nine characters";$string_0="";// a string with zero characters

Las cadenas entre comillas simples se tratan casi literalmente, mientras que las cadenas entre comillas dobles reemplazan las variables con sus valores, además de interpretar especialmente ciertas secuencias de caracteres.

<?php
   $variable = "name";
   $literally = 'My $variable will not print!';

   print($literally);
   print "\n";

   $literally = "My $variable will print!";
   print($literally);
?>

Al ejecutar este código, se producirá el siguiente resultado:

My $variable will not print!
My name will print

No hay límites artificiales en la longitud de las cuerdas. Dentro de los límites de la memoria disponible, debería ser capaz de hacer cadenas arbitrariamente largas.

Las cadenas que están delimitadas por comillas dobles (como en «this») son preprocesadas de las dos maneras siguientes por PHP:

  • Ciertas secuencias de caracteres que comienzan con una barra diagonal inversa (\) se reemplazan por caracteres especiales.
  • Los nombres de las variables (que comienzan con $) se reemplazan con representaciones de cadena de sus valores.

Los reemplazos de la secuencia de escape son:

  • \n se sustituye por el carácter de nueva línea
  • \r se sustituye por el carácter de retorno de carro
  • \t se sustituye por el carácter de tabulación
  • \$ se sustituye por el propio signo de dólar ($)
  •  se sustituye por una comilla doble simple («)
  • \\ se sustituye por una sola barra invertida (\)

PHP también tiene representaciones Heredoc y Nowdoc del tipo de datos de cadena.

Representación Heredoc del tipo de datos String

Puede asignar varias líneas a una sola variable de cadena usando heredoc −

<?php
   $channel =<<<_XML_

   <channel>
      <title>What's For Dinner</title>
      <link>http://menu.example.com/ </link>
      <description>Choose what to eat tonight.</description>
   </channel>
   _XML_;

   echo <<< END
      This uses the "here document" syntax to output multiple lines with 
	  variable interpolation. Note that the here document terminator must
	  appear on a line with just a semicolon. no extra whitespace!
   END;

   print $channel;
?>

Al ejecutar este código, se producirá el siguiente resultado:

This uses the "here document" syntax to output
multiple lines with variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!

<channel>
   <title>What's For Dinner</title>
   <link>http://menu.example.com/ </link>
   <description>Choose what to eat tonight.</description>
</channel>

Representación Nowdoc del tipo de datos String

Todas las reglas para los identificadores heredoc también se aplican a los identificadores nowdoc. Un nowdoc se especifica igual que un heredoc, pero no hay análisis dentro de un nowdoc. Puede utilizar la construcción nowdoc para incrustar grandes bloques de texto sin tener que utilizar ningún carácter de escape.

Un nowdoc se identifica con la misma secuencia <<< utilizada para heredocs, pero el identificador se encierra entre comillas simples, por ejemplo, <<<‘EOT’. Nowdocs se aplica a las cadenas entre comillas simples de la misma manera que heredocs se aplica a las cadenas entre comillas dobles.

Echa un vistazo al siguiente ejemplo:

<?php
   echo <<<'IDENTIFIER'
   As the cat cleared its throat with a refined "Meow",
   the squirrel chirped excitedly about its latest
   discovery of a hidden stash of peanut treasure!
   IDENTIFIER;
?>

Ejecute el código y compruebe su salida:

As the cat cleared its throat with a refined "Meow",
the squirrel chirped excitedly about its latest
discovery of a hidden stash of peanut treasure!

Tipo de datos nulo en PHP

En PHP, null representa un tipo especial que solo tiene un valor: NULL. Las variables Undefined y unset() se resolverán con el valor «null».

Los programadores normalmente usan el tipo de datos Null en PHP para inicializar variables o para indicar que falta un valor.

Para darle a una variable el valor NULL, simplemente asígnela así:

$my_var=NULL;

La constante especial NULL se escribe con mayúsculas por convención, pero en realidad no distingue entre mayúsculas y minúsculas; también podría haber escrito –

$my_var=null;

Una variable a la que se le ha asignado NULL tiene las siguientes propiedades:

  • Se evalúa como FALSE en un contexto booleano.
  • Devuelve FALSE cuando se prueba con la función IsSet().

Nota: Los tipos de datos de las variables en PHP se determinan en tiempo de ejecución en función de los valores que se les asignan.

Tipo de datos de array (matriz) en PHP

Un array en PHP es un mapa ordenado, una clave está asociada a uno o más valores. Un array PHP se define usando la función array(), o con el uso de una notación corta donde los datos se ponen entre corchetes.

Eche un vistazo a los siguientes ejemplos de matrices asociativas:

Uso de la función array()

$arr=array("foo"=>"bar","bar"=>"foo",);

Uso de la notación corta

$arr=["foo"=>"bar","bar"=>"foo",];

Un array en PHP también se puede definir con la sintaxis «par clave-valor». Se denomina matriz indexada.

$arr=array("foo","bar","hello","world");

En un array multidimensional, cada elemento del array principal también puede ser un array. Y cada elemento de la submatriz puede ser una array, y así sucesivamente. Se accede a los valores del array multidimensional mediante varios índices.

Nota − En PHP, los tipos de datos compuestos se utilizan para almacenar colecciones de datos, incluyendo matrices y objetos.

Tipo de datos de objeto en PHP

Un tipo de objeto es una instancia de una clase definida por el programador, que puede empaquetar otros tipos de valores y funciones que son específicos de la clase.

Para crear un nuevo objeto, use la instrucción new para crear una instancia de una clase:

class foo {
   function bar() {
      echo "Hello World."; 
   }
}
$obj = new foo;
$obj->bar();

Tipo de datos de recursos en PHP

Los recursos son variables especiales que contienen referencias a recursos externos a PHP (como un flujo de archivos o conexiones de bases de datos).

A continuación, se muestra un ejemplo de recurso de archivo:

$fp=fopen("foo.txt","w");

Los datos que pertenecen a cualquiera de los tipos anteriores se almacenan en una variable. Sin embargo, dado que PHP es un lenguaje de tipado dinámico, no es necesario especificar el tipo de una variable, ya que esto se determinará en tiempo de ejecución.

Ejemplo: La función gettype()

La función gettype() es útil para averiguar el tipo de datos almacenados en una variable:

<?php
   $x = 10;
   echo gettype($x) . "\n";

   $y = 10.55;
   echo gettype($y) . "\n";

   $z = [1,2,3,4,5];
   echo gettype($z);
?>

Al ejecutar este código, se producirá el siguiente resultado:

integer
double
array