Tipos de dados
Esta aula aborda os tipos de dados em PHP, incluindo os tipos escalares (int, float, string, bool), o tipo null, conversão de tipos (casting) e as funções var_dump e gettype para depuração.
Nesta aula, vamos explorar os tipos de dados fundamentais do PHP. Entender os tipos de dados é essencial para escrever código correto e eficiente, pois o PHP é uma linguagem de tipagem dinâmica, mas possui tipos bem definidos que influenciam como os valores são armazenados e manipulados.
Vamos começar com os tipos escalares, que representam valores únicos, depois veremos o tipo especial null, aprenderemos como converter entre tipos usando casting, e por fim conheceremos funções essenciais para inspecionar tipos: var_dump e gettype.
Escalares (int, float, string, bool)
Os tipos escalares são aqueles que contêm um único valor. O PHP oferece quatro tipos escalares: inteiros (int), números de ponto flutuante (float), strings (string) e booleanos (bool).
Inteiros (int): Representam números inteiros, positivos ou negativos, sem parte decimal. Exemplos: 42, -7, 0. O tamanho depende da plataforma (geralmente 64 bits).
Float (float): Representam números com parte decimal, também chamados de doubles. Exemplos: 3.14, -0.5, 1.2e3 (notação científica).
String (string): Sequências de caracteres, delimitadas por aspas simples ou duplas. Exemplos: 'Olá', "Mundo". As aspas duplas permitem interpolação de variáveis e caracteres especiais.
Boolean (bool): Representam valores lógicos: true ou false. São usados em expressões condicionais.
<?php
// Exemplos de tipos escalares
$idade = 25; // int
$preco = 19.99; // float
$nome = 'João'; // string
$ativo = true; // bool
echo $idade; // 25
echo $preco; // 19.99
echo $nome; // João
echo $ativo; // 1 (true é convertido para 1 quando impresso)
?>Null
O tipo null representa uma variável sem valor. Uma variável é considerada null se:
- Foi atribuído o valor
nullexplicitamente. - Ainda não foi definida (não atribuída).
- Foi destruída com
unset().
Null é útil para indicar ausência de valor, como em campos opcionais de formulários ou valores não encontrados.
<?php
$var = null;
var_dump($var); // NULL
$outraVar; // não definida, mas ao acessar gera warning; o valor é null implicitamente
?>Conversão (casting)
O PHP permite converter explicitamente um valor de um tipo para outro usando casting. As sintaxes são:
(int)ou(integer)- converte para int(float)ou(double)ou(real)- converte para float(string)- converte para string(bool)ou(boolean)- converte para bool(array)- converte para array(object)- converte para objeto
Além disso, o PHP faz conversões automáticas (implicitas) quando necessário, por exemplo, em operações aritméticas ou concatenação.
<?php
$numero = '123';
$inteiro = (int) $numero; // 123
$pi = '3.14';
$float = (float) $pi; // 3.14
$verdadeiro = (bool) 1; // true
$falso = (bool) 0; // false
echo $inteiro; // 123
echo $float; // 3.14
?>var_dump e gettype
Para depuração, o PHP fornece funções que revelam o tipo e o valor de uma variável.
var_dump(): Exibe informações estruturadas sobre uma ou mais variáveis, incluindo tipo e valor. Para arrays e objetos, mostra a estrutura completa com índices e valores.
gettype(): Retorna uma string com o nome do tipo da variável (ex.: 'integer', 'string', 'boolean', 'NULL').
<?php
$nome = 'Maria';
$idade = 30;
$preco = 9.99;
$casado = false;
var_dump($nome); // string(5) "Maria"
var_dump($idade); // int(30)
var_dump($preco); // float(9.99)
var_dump($casado); // bool(false)
echo gettype($nome); // string
echo gettype($idade); // integer
echo gettype($preco); // double
echo gettype($casado); // boolean
?>Boas práticas
Sempre verifique o tipo de dados antes de operações críticas, especialmente ao receber dados de entrada do usuário ou de fontes externas. Use var_dump() durante o desenvolvimento para entender o que está sendo manipulado. Prefira casting explícito para evitar surpresas com conversões implícitas.
Referências
- PHP Manual: Introdução aos tipos
- PHP Manual: Inteiros
- PHP Manual: Números de ponto flutuante
- PHP Manual: Strings
- PHP Manual: Booleanos
- PHP Manual: Null
- PHP Manual: Manipulação de tipos
- PHP Manual: var_dump
- PHP Manual: gettype
Exercícios
Crie uma variável
$valorcom o valor'42'(string). Use casting para convertê-la para inteiro e armazene em$numero. Exiba o tipo de$numerocomgettype().✓ Resposta:<?php $valor = '42'; $numero = (int) $valor; echo gettype($numero); // integer ?>Declare uma variável
$flagsem atribuir valor. Depois atribuanulla ela. Usevar_dump()para exibir a variável após cada etapa.✓ Resposta:<?php $flag; // ainda não definida, mas ao acessar gera warning var_dump($flag); // NULL (com warning) $flag = null; var_dump($flag); // NULL ?>Escreva um trecho que converta o float
3.99para string e depois para inteiro. Mostre o resultado de cada conversão.✓ Resposta:<?php $preco = 3.99; $precoStr = (string) $preco; echo $precoStr; // '3.99' $precoInt = (int) $precoStr; // 3 (a parte decimal é truncada) echo $precoInt; // 3 ?>Use
var_dump()para inspecionar as seguintes variáveis:$a = true,$b = 'true',$c = 1. O que você observa sobre os tipos?✓ Resposta:<?php $a = true; $b = 'true'; $c = 1; var_dump($a); // bool(true) var_dump($b); // string(4) "true" var_dump($c); // int(1) // Observamos que true é booleano, 'true' é string, e 1 é inteiro. ?>Crie uma variável
$textocom o valor'PHP é legal'. Usegettype()para exibir o tipo. Depois converta para booleano usando(bool)e exiba o resultado comvar_dump(). Explique por que o resultado étrue.✓ Resposta:<?php $texto = 'PHP é legal'; echo gettype($texto); // string $bool = (bool) $texto; var_dump($bool); // bool(true) // Qualquer string não vazia é convertida para true, exceto "0" e string vazia. ?>