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 null explicitamente.
  • 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

Exercícios

  1. Crie uma variável $valor com o valor '42' (string). Use casting para convertê-la para inteiro e armazene em $numero. Exiba o tipo de $numero com gettype().

    ✓ Resposta:
    <?php
    $valor = '42';
    $numero = (int) $valor;
    echo gettype($numero); // integer
    ?>
  2. Declare uma variável $flag sem atribuir valor. Depois atribua null a ela. Use var_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
    ?>
  3. Escreva um trecho que converta o float 3.99 para 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
    ?>
  4. 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.
    ?>
  5. Crie uma variável $texto com o valor 'PHP é legal'. Use gettype() para exibir o tipo. Depois converta para booleano usando (bool) e exiba o resultado com var_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.
    ?>