W3docs

Compreendendo os Tipos de Dados do PHP

Aprenda os oito tipos de dados do PHP — int, float, bool, string, array, object, null e resource — com exemplos, verificação de tipos e regras de conversão.

Um tipo de dado descreve que tipo de valor uma variável armazena e quais operações são válidas nela. O PHP é tipado dinamicamente: você nunca declara um tipo, apenas atribui um valor e o PHP infere o tipo a partir dele. A mesma variável pode até mudar de tipo durante a execução de um script. Compreender os oito tipos nativos — e como o PHP converte entre eles — é a base para escrever código PHP previsível.

Este capítulo aborda todos os tipos do PHP, como inspecionar o tipo de um valor em tempo de execução e as regras de conversão automática que costumam confundir iniciantes.

Os Oito Tipos de Dados do PHP

O PHP possui oito tipos primitivos, agrupados em três famílias:

FamíliaTipos
Escalar (valor único)int, float, bool, string
Composto (coleções)array, object
Especialnull, resource

Você pode perguntar ao PHP qual é o tipo de qualquer valor com a função gettype(), ou verificar um tipo específico com funções como is_int(), is_string() ou is_null().

<?php
$value = 42;
echo gettype($value); // integer
$value = "now I'm a string";
echo PHP_EOL . gettype($value); // string

Tipos Escalares

Os tipos escalares armazenam um único valor.

Integer

Um integer é um número inteiro, positivo ou negativo, sem ponto decimal. Saiba mais em PHP Numbers.

<?php
$num = 42;        // decimal
$negative = -7;
$hex = 0x1A;      // hexadecimal (26)
$binary = 0b101;  // binary (5)
echo "$num $negative $hex $binary"; // 42 -7 26 5

Float

Um float (número de ponto flutuante) armazena um número com ponto decimal ou expoente. Note que floats são aproximados, portanto nunca os compare por igualdade exata.

<?php
$price = 12.99;
$scientific = 1.2e3; // 1200
echo $price + $scientific; // 1212.99

Boolean

Um boolean armazena apenas true ou false. É o tipo produzido por comparações e utilizado por condições como if.

<?php
$isActive = true;
$hasError = false;
var_dump($isActive); // bool(true)

String

Uma string é uma sequência de caracteres. Strings entre aspas duplas interpolam variáveis; strings entre aspas simples não interpolam. Veja PHP Strings para a explicação completa.

<?php
$name = "John";
echo "Hello, $name!";  // Hello, John!
echo PHP_EOL . 'Hello, $name!'; // Hello, $name!  (no interpolation)

Tipos Compostos

Os tipos compostos agrupam múltiplos valores.

Array

Um array armazena um mapa ordenado de pares chave/valor em uma única variável. Use a sintaxe curta [] no PHP moderno.

<?php
$fruits = ["apple", "banana", "cherry"];
$prices = ["apple" => 1.20, "banana" => 0.50]; // associative
echo $fruits[1];          // banana
echo PHP_EOL . $prices["apple"]; // 1.2

Object

Um object é uma instância de uma classe — ele agrupa dados (propriedades) com comportamento (métodos). Crie um com a palavra-chave new.

<?php
class Person {
    public function __construct(public string $name) {}
    public function greet(): string {
        return "Hi, I'm {$this->name}";
    }
}

$person = new Person("Ada");
echo $person->greet(); // Hi, I'm Ada

Tipos Especiais

NULL

null representa uma variável sem valor. Uma variável é null se foi atribuída à constante null, ainda não foi definida, ou foi removida com unset(). Verifique com is_null() ou === null.

<?php
$age = null;
var_dump(is_null($age)); // bool(true)

Resource

Um resource é uma variável especial que contém uma referência a um objeto externo, como um arquivo aberto ou uma conexão com banco de dados. Você não cria resources diretamente — funções como fopen() os retornam. Resources são liberados automaticamente quando não são mais utilizados.

Conversão de Tipos e Casting

Como o PHP é tipado dinamicamente, ele converte automaticamente ("juggling") os tipos quando uma operação exige. Por exemplo, uma string numérica se torna um número em operações aritméticas:

<?php
$result = "5" + 3; // the string "5" is converted to int 5
echo $result; // 8

Uma string que apenas começa com dígitos (como "5 apples") gera um aviso no PHP moderno, portanto converta explicitamente com um cast.

Quando você precisa de controle explícito, faça um cast do valor escrevendo o tipo alvo entre parênteses:

<?php
$text = "12.99";
$asFloat = (float) $text; // 12.99 as a float
$asInt = (int) $text;     // 12 (truncated)
var_dump($asInt); // int(12)

Atenção à veracidade: ao fazer cast para bool, os valores 0, 0.0, "", "0", [] e null são todos false; quase todo o resto é true.

<?php
var_dump((bool) "0");   // bool(false)
var_dump((bool) "0.0"); // bool(true)  — surprising!

Quando Usar Cada Tipo

  • Use int/float para quantidades e cálculos; recorra aos utilitários de PHP Numbers para formatação.
  • Use string para texto e identificadores.
  • Use bool para flags e resultados de comparações.
  • Use array para armazenar listas ou mapas de valores relacionados.
  • Use object para modelar entidades do mundo real com dados e comportamento.
  • Use null para indicar "sem valor ainda", em vez de um placeholder fictício como 0 ou "".

Resumo

O PHP infere automaticamente o tipo de um valor a partir do que você atribui e suporta oito tipos distribuídos nas famílias escalar, composta e especial. Inspecione tipos com gettype() e as funções is_*, e controle conversões com casts explícitos. Dominar a conversão automática de tipos — especialmente as regras de bool e string numérica — previne toda uma classe de bugs sutis. A seguir, veja como os tipos interagem com operadores e como armazená-los em variáveis.

Prática

Prática
Quais dos seguintes são tipos de dados válidos no PHP?
Quais dos seguintes são tipos de dados válidos no PHP?
Was this page helpful?