PHP cuenta con muchos tipos de datos, sin embargo, en este momento nos vamos a enfocar en los más importantes y utilizados que son boolean, integer, float, string, array y NULL.
float o double:
Representa un número de punto flotante, existen problemas de precisión con los números flotantes debido a la naturaleza binaria de las computadoras. http://php.net/manual/es/language.types.float.php
<?php
$a =12.24;$b =1.5e3;$c =7E-10;?>
string:
-- Representa una cadena de caracteres.
-- Existen 4 formas de representar una cadena. Las 2 principales son usando comillas simples o comillas dobles.
---- Usando comillas simples donde el texto será exactamente como se escribe.
---- Usando comillas dobles permite usar caracteres de escape y además expanden los nombres de las variables, es decir sustituye el valor de las variables dentro de las cadenas.
-- Hay 2 formas adicionales llamadas Heredoc y Nowdoc que sirven para crear cadenas de múltiples líneas.
Si quieres conocer más de este tipo de dato da click aquí.
<?php
$a = ”Hola”;$b = ‘Mundo’;?>
Tipos compuestos:
array:
Representa una colección de valores, aunque por defecto PHP usara índices numéricos, la realidad es que la estructura se representa como un mapa que colecciona pares llave-valor. La sintaxis para definir un arreglo será a partir de corchetes cuadrados, aunque en versiones anteriores de PHP era necesario usar la función array(). Las llaves pueden ser enteros o cadenas y los valores pueden ser de cualquier tipo de PHP, incluso de tipo array. http://php.net/manual/es/language.types.array.php
<?php
$array =array("curso1"=>"php","curso2"=>"js",);// a partir de PHP 5.4$array =["curso1"=>"php","curso2"=>"js",];// índices numéricos$array =["php","js",];?>
object:
Representa una instancia de una clase. Este tema lo veremos más a fondo en la clase de Programación Orientada a Objetos.
callable:
Es un tipo de dato especial que representa a algo que puede ser “llamado”, por ejemplo una función o un método.
<?php
// Variable que guarda un callable$firstOfArray=function(array $array){if(count($array)==0){returnnull;}return $array[0];};// Este es nuestro arreglo$values =[3,2,1];// Usamos nuestro callable y se imprime el valor 3echo $firstOfArray($values);?>
iterable:
A partir de PHP 7.1 iterable es un pseudo tipo de datos que puede ser recorrido.
<?php
functionfoo(iterable $iterable){foreach($iterable as $valor){// ...}}?>
Tipos especiales:
resource:
Es un tipo de dato especial que representa un recurso externo, por ejemplo un archivo externo a tu aplicación.
Exactamente asi debe ser, se cortaron partes del codigo pero ya se van a corregir, gracias Antonio
disculpen en returnnull falta el espacio return null o se puede usar junto
Creo que éste tema si merecia un video detallado.
Heredoc y Nowdoc
Son formas de definir un string multilinea (algo así como en vez de escribir linea por linea escribir directamente el párrafo).
Heredoc:<<< identificador contenido identificador;
Lo que hay entre los identificadores sera interpretado como si estuviera en comillas dobles.
Nowdoc: misma sintaxis que Heredoc pero el primer identificador va entre comillas simples y el contenido se interpreta como si estuviera entre comillas simples.
Documentación oficial:
Interesante tema, pero considero que sería más claro si se realizaran ejercicios en vídeo. Gracias.
Parece ser más amigable que C 😄
Claro, en parte se debe a que es un lenguaje de mas alto nivel ( por asi decirlo ) y que es un lenguaje interpretado y no compilado, sin embargo se utilizan plenamente para cosas distintas, si nos vamos a unas escalas de poder, con C podrias crear sistemas operativos propios.
Aunque en PHP existe los tipos de datos, no siempre es necesario indicar cuál vamos a usar, solo lo usamos y ya, y algo importante es que en PHP los arreglos asociativos (Los que tienen índices de string) son muy usados, de hecho, estos prácticamente son como trabajar con objetos JSON en JavaScript
Y un callable es literal una función anónima o lo que sería una función expresiva para JavaScript
No se si mas adelante lo hagan, pero estaría genial que hicieran un video explicando cada tipo de dato, y estaría muy bien si mostraran ejemplos explicados ya que así vemos como funcionan realmente.
Tipos de datos en PHP
En PHP existen diversos tipos de datos, pero los mas comunes son:
• Boolean: Representan un valor ya sea verdadero o falso.
• Integer: Representa un numero entero ya sea positivo, negativo o igual a 0
• Float o double: Representa un numero de punto flotante.
• String:
o Representa una cadena de texto
o Existen 4 formas de representar una cadena, las dos mas comunes son con comillas dobles o con comillas simples.
o Las comillas simples donde el texto se muestra literalmente como lo ingresas, es decir si queremos que se muestre el valor de una variable dentro de la cadena de texto, no se va a poder ya que lo que nos mostrara será literalmente el nombre de la variable que hemos invocado.
o Con comillas dobles, de esta manera si podemos concatenar variables dentro de la cadena de texto y así como resultado podemos mostrar el valor de las variables como parte de la cadena.
o Existen otras 2 maneras llamadas Heredoc y Nowdoc pero no son tan comunes y sirven para crear cadenas de múltiples líneas.
• Array: Representan una colección de valores del mismo tipo, incluso pueden ser valores del tipo array, la sintaxis es a partir de corchetes cuadrados.
• Object: Representa una instancia de una clase.
• Callable: Es un tipo de dato que representa algo que puede ser llamado, ya sea una función o un array.
• Iterable: Es un pseudo tipo de dato que puede ser recorrido.
Tipos especiales:
• Resource: Representa un recurso externo al proyecto, por ejemplo un archivo fuera de la aplicación.
• Null: Es un tipo de dato que se usa para representar una variable sin valor.
La diferencia entre estas comillas ( " " ) y comillas simples ( ' ' ), es que todo lo que introduzcas dentro de comillas simples será tomado con texto (string) . Mientras que por otro lado usando " " podemos imprimir variables . Ej
<?php
$nombre = "Andres ";
echo "Mi nombre es: $nombre";
//De esta manera me reconocería mi variable nombre y su valor ...
//Pero de esta manera lo tomaria solo como un string:
echo 'Mi nombre es: $nombre';
//De esta manera no leería $nombre como variable , mas si como un string (cadena de texto)....
?>
Por otra parte los arrays en PHP pueden almacenar cualquier tipo de dato , ya sea integer, double , string, boolean etc..
Los arrays se cuentan por indice , y su posicion inicial siempre es 0 ... Osea si tenemos un array que almacene los numeros del 1 al 5 Ej :
$numeros = [1,2,3,4,5];
//su posicion inicial es 0 , para acceder al numero 1 sería de esta manera nombre_del_array[posicion]; Ej:
echo $numeros[0]; //De esta manera accedemos al array en su posicion 0 y su valor sería 1
?>
Un objeto es una instancia perteneciente a una clase ...
<?php
class Car
{
function move()
{
echo "Going forward...";
}
}
$myCar = new Car();
$myCar->move();
?>
En este ejemplo podemos ver como se crea una instancia a la clase Car --- $myCar = new Car();
luego $myCar llama a la funcion move() , la llama con el operador flecha -> ---- $myCar();
En aplicaciones medianamente grandes, un colega siempre me recomendó que una vez se haya ejecutado un determinado bloque de código como parte de un flujo de datos simple, establecer las variables a null para el tema de la memoria (rendimiento),
¿Será del todo cierto tal afirmación?
¿Si es recomendable asignar a null todas las variables que utilicemos en un controlador de vista por ejemplo una vez estemos seguros de que el flujo básico de eventos ha llegado a un punto final?
Gracias.
La variable igual esta definida y ocupa espacio en memoria, así este vacía, lógicamente si la variable tiene información ocupa más memoria. En versiones anteriores a PHP 5.3 no existía el Garbace Collection pero ahora ya esto no es problema.
Aún no me queda muy claro para qué se usa la variable tipo NULL. Si representa una variable sin valor, no sería lo mismo relacionarla como $variable = ’ '; ¿? Me podrían aclarar por favor.
Nowdoc es a los string con comillas simples lo mismo que Heredoc lo es a los string con comillas dobles. Un nowdoc se especifica de forma análoga a un heredoc, pero no se realiza ningún análisis dentro del nowdoc. La construcción es ideal para embeber código de PHP o grandes fragmentos de texto sin necesidad de escaparlos. Comparte algunas características comunes con la construcción <![CDATA[ ]]> de SGML, donde se declara un bloque de texto que no se analiza.
Un nowdoc se identifica con la misma secuencia empleada para heredoc, <<<, pero el identificador que le sigue está delimitado con comillas simples, p.ej., <<<'EOT'. Todas las reglas para los identificadores de heredoc también son aplicables a los identificadores de nowdoc, especialmente aquellas que se refieren al empleo del identificador de cierre.
<?php
$str =<<<'EOD'Ejemplo de un string
expandido en varias líneas
empleando la sintaxis nowdoc.EOD;/* Un ejemplo más complejo con variables. */classfoo{public $foo;public $bar;functionfoo(){ $this->foo ='Foo'; $this->bar =array('Bar1','Bar2','Bar3');}}$foo =newfoo();$nombre ='MiNombre';echo <<<'EOT'Mi nombre es "$nombre".Estoy escribiendo un poco de $foo->foo.Ahora, estoy escribiendo un poco de {$foo->bar[1]}.Esto debería mostrar una 'A'mayúscula: \x41
EOT;?>
Muy buen ejemplo, gracias! Hasta para repasar la sintaxis de las clases en PHP, muy bien, solamente que me parece
que estás empleando una versión ya obsoleta para algunas versiones de PHP del método constructor, al declararlo simplemente usando el mismo nombre de la clase, esta es la forma más adecuada y mucho más legible, solo quería compartirlo.
function__construct(){//Inicialización de atributos y demás acciones del método constructor}
$values =[3,2,1];foreach($values as $x){ echo $x;}
Resultado
321
$var= "variables XD";
echo <<<cadena
con Heredoc se muestran las variables XD
cadena;
echo <<<'cadena2'
con Nowdoc se muestra asi $var
cadena2;
si se quiere interpretar variables se usa heredoc
No entendí que es una callable.
Simplemente es la llamada de una función para ejecutarla.
Yo entendí que es como una function cualquiera, solo que en este caso se define el nombre antes que la palabra clave "function".
El ejemplo, sería igual que esto como función cualquiera...
en otras palabras.... imagina una función pero dentro de una variable. 👍 Así lo entendí yo, si estoy mal pues perdón.
Muy buena forma de explicar los tipos de datos, conocía los tipos escalares o primitivos, pero no tenia claro el compuesto callable y el especial resource. 😃
Enterandome de la existencia de los tipos heredoc y nowdoc... ya el curso valio la pena para mi (Y)
Esta información de las variables la deberían dejar en un PDF que pudiéramos descargar.
Interesante el tema, solo quiero decir que en el código del callable hay un error de sintaxis y mis conocimientos aun no son suficientes para detectar el error, seria excelente que estos códigos estuvieran depurados.
Hola Arbey, acabo de hacer el ejemplo y no me genera errores. ¿En dónde te genera el error a ti?
Hola. Tal como lo dice Diego, a mi tampoco me genera errores. A ver si te podemos ayudar. Saludos.
No tenía ni idea de que existieran tantos tipos de datos!!