Os tipos de dados são fundamentais em qualquer linguagem de programação, pois definem o que uma variável pode armazenar e como os dados podem ser manipulados. Em PHP, uma linguagem de tipagem dinâmica, as variáveis não precisam ter seu tipo declarado explicitamente; o tipo é determinado pelo valor atribuído. No entanto, entender os tipos disponíveis e como convertê-los é essencial para escrever código correto e eficiente.

Nesta aula, exploraremos os tipos escalares (int, float, string, bool), o tipo especial null, técnicas de conversão (casting) e as funções var_dump e gettype, que permitem inspecionar o tipo e o valor de uma variável. Ao final, você será capaz de identificar e manipular diferentes tipos de dados com confiança.

Escalares (int, float, string, bool)

Os tipos escalares representam valores únicos e indivisíveis. Em PHP, existem quatro tipos escalares: int (inteiros), float (números de ponto flutuante), string (cadeias de caracteres) e bool (valores booleanos).

Inteiro (int): números inteiros, positivos ou negativos, sem parte decimal. O tamanho depende da plataforma (geralmente 64 bits). Exemplo: 42, -7, 0. Podem ser escritos em notação decimal, hexadecimal (0x...), octal (0o...) ou binária (0b...).

Ponto flutuante (float): números com parte decimal ou em notação científica. Exemplos: 3.14, -0.001, 1.2e3 (que equivale a 1200). Cuidado com comparações de igualdade devido a imprecisões de arredondamento.

String: sequência de caracteres, delimitada por aspas simples ('...') ou duplas ("..."). Aspas duplas interpretam variáveis e caracteres especiais (como \n), enquanto aspas simples tratam o texto literalmente. Exemplo: "Olá, $nome" vs 'Olá, $nome'.

Booleano (bool): representa verdadeiro ou falso. Os valores são true e false (case-insensitive). Em contextos condicionais, outros valores também são avaliados como booleanos (ex: 0, 0.0, "", "0", null, array vazio são considerados false).

Null

O tipo null representa uma variável sem valor. Uma variável é considerada null se:

  • Foi atribuída a constante null.
  • Ainda não foi definida (mas isso gera um aviso se acessada).
  • Foi destruída com unset().

Null é útil para indicar ausência de dados, como em campos opcionais de formulários ou retornos de funções que não encontraram resultado.

Conversão (casting)

PHP permite converter explicitamente um valor de um tipo para outro usando casting. A sintaxe é (tipo) $variavel. Os principais casts são:

  • (int) ou (integer): converte para inteiro.
  • (float) ou (double) ou (real): converte para float.
  • (string): converte para string.
  • (bool) ou (boolean): converte para booleano.
  • (array): converte para array.
  • (object): converte para objeto.

A conversão também ocorre implicitamente em operações, mas o casting explícito torna a intenção clara.

var_dump e gettype

Para inspecionar o tipo e o valor de uma expressão, PHP fornece duas funções úteis:

  • var_dump($var): exibe informações estruturadas sobre a variável, incluindo tipo e valor. Para arrays e objetos, mostra recursivamente. É a ferramenta mais usada para depuração.
  • gettype($var): retorna uma string com o nome do tipo da variável (ex: "integer", "double", "string", "boolean", "NULL", "array", "object").

Use var_dump quando precisar ver o conteúdo completo; use gettype para verificações rápidas de tipo em condicionais.

Boas práticas

  • Sempre verifique o tipo de dados recebidos de fontes externas (formulários, APIs) antes de usá-los.
  • Prefira comparações estritas (=== e !==) para evitar conversões implícitas inesperadas.
  • Use var_dump durante o desenvolvimento para depurar, mas remova ou substitua por logs em produção.
  • Evite confiar em conversões implícitas; use casting explícito para tornar o código mais legível.

Referências

Exercícios

  1. Declare uma variável $preco com valor 49.99 (float) e outra $quantidade com valor 3 (int). Calcule o total e exiba o tipo da variável $total usando gettype.

    ✓ Resposta:
  2. Converta a string "123abc" para inteiro usando casting. Qual o resultado? Explique.

    ✓ Resposta:

    O resultado é 123. O PHP converte a string até encontrar um caractere não numérico, ignorando o restante.

  3. Crie uma variável $flag com valor null. Use var_dump para exibir seu conteúdo. Depois atribua a string vazia "" e use var_dump novamente. Qual a diferença?

    ✓ Resposta:

    O primeiro mostra NULL, indicando ausência de valor. O segundo mostra string vazia, um tipo string com comprimento zero.

  4. Escreva um código que verifique se uma variável $entrada é booleana. Se for, imprima "É booleano"; caso contrário, imprima o tipo usando gettype.

    ✓ Resposta:
  5. Explique a diferença entre == e === em relação a tipos. Dê um exemplo onde o comportamento difere.

    ✓ Resposta:

    == compara valores após conversão de tipos (igualdade solta), enquanto === compara valor e tipo (igualdade estrita). Exemplo: 0 == "0" é true, mas 0 === "0" é false.