Variáveis e tipos de dados

As variáveis são como caixas etiquetadas — você coloca os dados dentro de uma caixa, coloca uma etiqueta e, mais tarde, usa a etiqueta para encontrá-los. No PHP, o nome de toda variável deve começar com $ — essa é a característica mais marcante do PHP.

1. Declaração e nomeação de variáveis

Declarar uma variável em PHP é simples: $ + nome da variável = valor. Não é preciso declarar um tipo primeiro, ao contrário do que acontece em C ou Java.

PHP
<?php
$name = "John";       // String
$age = 25;            // Integer
$height = 1.75;       // Float
$isStudent = true;    // Boolean
?>

(1) Regras de nomenclatura

Regra ✅ Correto ❌ Errado
Deve começar com $ $name name (sem $)
Letra ou sublinhado após $ $name, $_name $1name, $-name
Seguido por letras, dígitos e sublinhados $user_id, $user2 $user-id, $user@id
Distingue maiúsculas de minúsculas $name$Name
Usar camelCase $firstName, $userAge
💡 Dica: Os nomes das variáveis do PHP que começam com $ são herdados do Perl. Isso faz com que as variáveis do PHP sejam reconhecidas imediatamente quando misturadas com HTML.


2. Os oito tipos de dados do PHP

O PHP possui 8 tipos primitivos, agrupados em três categorias:

Categoria Tipo Exemplo Descrição
Escalar string "Hello" Uma sequência de caracteres
int 42 Números inteiros
float 3.14 Números de ponto flutuante (também chamados de double)
bool true / false Valores booleanos
Composto array [1, 2, 3] Mapa ordenado de valores
object new User() Instâncias de classes
callable Uma função de retorno de chamada Tipo chamável
iterable Traversável Tipo iterável
Especial null null Representa nenhum valor
resource Identificador de arquivo / conexão com banco de dados Referência a um recurso externo

▶ Exemplo: Verificando os tipos das variáveis com o var_dump

PHP
<?php
$name = "John";
$age = 25;
$price = 19.99;
$isValid = true;
$nothing = null;

var_dump($name);     // string(4) "John"
var_dump($age);      // int(25)
var_dump($price);    // float(19.99)
var_dump($isValid);  // bool(true)
var_dump($nothing);  // NULL
?>
▶ Experimente

3. Strings — Uso básico

PHP
<?php
$s1 = 'PHP Tutorial';       // Single quotes: literal string, no variable parsing
$s2 = "PHP Tutorial";       // Double quotes: parses variables and escape sequences

$name = "John";
echo 'Hello $name';         // Hello $name  — single quotes don't parse variables
echo "Hello $name";         // Hello John   — double quotes parse variables
?>
Sintaxe Analisa variáveis? Analisa sequências de escape? Ideal para
'Single quotes' Não Apenas \\ e \' Texto simples
"Double quotes" Sim Analisa \n \t etc. Inserção de variáveis

Vamos nos aprofundar no assunto das cadeias de caracteres na próxima aula.

▶ Exemplo: Comparação entre aspas simples e duplas

PHP
<?php
$name = "John";

// Single quotes: output exactly as written
echo 'Hello, $name!\nNice weather today.';
// Output: Hello, $name!\nNice weather today.

// Double quotes: parse variables and escape sequences
echo "Hello, $name!\nNice weather today.";
// Output: Hello, John! (newline) Nice weather today.
?>
▶ Experimente

4. Números inteiros (int) e números de precisão flutuante (float)

PHP
<?php
$decimal = 42;         // Decimal
$hex = 0x2A;           // Hexadecimal (=42)
$octal = 052;          // Octal (=42)
$binary = 0b101010;    // Binary (=42)

$float1 = 3.14;        // Float
$float2 = 1.2e3;       // Scientific notation = 1200
$float3 = 7E-10;       // Scientific notation = 0.0000000007
?>
⚠️ Atenção: Os números de ponto flutuante não conseguem representar frações decimais com precisão. 0.1 + 0.2 em PHP não é igual a 0.3 — é algo como 0.30000000000000004. Ao trabalhar com valores monetários, armazene os valores em centavos como números inteiros ou use a extensão bcmath.


5. Valores booleanos (bool)

Os valores booleanos têm apenas dois valores: true e false. Não há distinção entre maiúsculas e minúsculas, mas a convenção é usar letras minúsculas.

PHP
<?php
$isLogin = true;
$isAdmin = false;

if ($isLogin) {
    echo "Welcome back!";
}
?>
💡 Dica: echo true exibe 1; echo false exibe uma string vazia (não aparece nada). Use var_dump() para verificar valores booleanos.


6. Funções de verificação de tipos

PHP
<?php
$name = "John";
$age = 25;

var_dump(is_string($name));   // bool(true)
var_dump(is_int($age));       // bool(true)
var_dump(is_float($age));     // bool(false)
var_dump(is_bool($age));      // bool(false)
var_dump(is_array($name));    // bool(false)

// gettype() returns the type name (for debugging, not logic)
echo gettype($name);  // string
?>
Função Verifica se
is_string() String
is_int() Inteiro
is_float() Flutuante
is_bool() Booleano
is_array() Matriz
is_null() NULL
is_numeric() Número ou sequência numérica

7. Conversão de tipos

O PHP é uma linguagem de tipagem fraca e converte tipos automaticamente. Você também pode fazer a conversão explicitamente:

PHP
<?php
// Automatic conversion
$result = "10" + 5;         // 15 ("10" converted to number)
$text   = "10" . 5;         // "105" (5 converted to string)

// Explicit conversion
$intVal   = (int) "123";    // 123
$floatVal = (float) "3.14"; // 3.14
$strVal   = (string) 123;   // "123"
$boolVal  = (bool) 1;       // true
?>

▶ Exemplo: Conversão de tipos na prática

PHP
<?php
// String to number
$a = (int) "42";
echo $a + 8;  // 50

// Number to string
$b = (string) 100;
echo "Price: " . $b . " yuan";  // Price: 100 yuan

// Boolean conversion rules: these values are treated as false
echo (int)((bool)0);     // 0
echo (int)((bool)"");    // 0
echo (int)((bool)[]);    // 0
echo (int)((bool)null);  // 0
// All other values are true
?>
▶ Experimente
⚠️ Atenção: "0", "", 0, [] e null são todos false em um contexto booleano. Se você não conseguir se lembrar, basta testar com var_dump((bool)$x).


8. isset() e empty()

Estas são três das funções de manipulação de variáveis mais utilizadas no PHP:

PHP
<?php
$var1 = "Hello";
$var2 = null;

// isset(): variable is set and not null → true
var_dump(isset($var1));       // bool(true)
var_dump(isset($var2));       // bool(false)
var_dump(isset($notExist));   // bool(false) — doesn't exist

// empty(): variable is empty → true ("", 0, "0", null, false, [] are all "empty")
var_dump(empty($var1));       // bool(false) — "Hello" is not empty
var_dump(empty($var2));       // bool(true)  — null is empty
var_dump(empty(0));           // bool(true)  — 0 is considered empty!
var_dump(empty($notExist));   // bool(true)  — not existing is also considered empty
?>

▶ Exemplo: comparação lado a lado entre isset e empty

PHP
<?php
function testVar(string $label, mixed $value): void {
    echo "$label — isset: " . (isset($value) ? 'true' : 'false');
    echo " | empty: " . (empty($value) ? 'true' : 'false') . "<br>";
}

testVar('"Hello"', "Hello");
testVar('""', "");
testVar('0', 0);
testVar('null', null);
// Observe the isset and empty results for each value
?>
▶ Experimente
🔥 Erro comum: empty(0) retorna true! O número 0 é considerado “vazio”. Ao validar se um número foi inserido, use isset() combinado com is_numeric() — não use empty().

❓ Perguntas Frequentes

P: Por que o comando echo false não exibe nada? R: Porque echo false é equivalente a echo "" (cadeia vazia). Para verificar um valor booleano, use var_dump($var) ou echo $var ? 'true' : 'false'.

P: Quando devo usar isset() em vez de empty()? R: isset() verifica se “a variável existe e não é nula” — use-a para verificar se um formulário foi enviado. empty() verifica se “a variável está vazia/é zero/é falsa?” — use-a para validar se o campo de entrada está em branco. Para verificar entradas numéricas, use isset() + is_numeric() — nunca empty().

P: O PHP é uma linguagem de tipagem fraca. Isso faz com que erros de tipagem sejam comuns? R: Adote dois hábitos: (1) Use === em vez de == para comparações (a comparação estrita não converte tipos automaticamente); (2) Adicione declarações de tipo aos parâmetros das funções (o PHP 7+ oferece suporte a isso). Abordaremos esses pontos em detalhes mais adiante.

📖 Resumo

📝 Exercícios

  1. Crie três variáveis de tipos diferentes (string, inteiro, booleano) e use var_dump() e gettype() para verificar cada uma delas.
  2. Escreva um código para testar como isset() e empty() se comportam com os seguintes valores: "Hello", "", 0, null e uma variável indefinida. Resuma as diferenças.
  3. Faça um exercício de conversão de tipos: pegue uma string de preço inserida pelo usuário, como "$99.9", e converta-a em um número de tipo float que possa ser calculado. Tente com (float) — isso funciona diretamente? Se não, pense em como lidar com isso.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%