Tipos de dados em PHP

Os tipos de dados são praticamente idênticos em várias linguagens de programação, porém, você vai encontrar algumas diferenças no PHP que elevam ainda mais a facilidade de sua utilização.

Primeiramente, não é necessário declarar explicitamente que um valor é de determinado tipo. É possível criar uma variável com qualquer valor em tempo de execução do código; o interpretador do PHP vai declarar a variável e o tipo de valor que essa variável carrega.

Por exemplo:

<?php
// Declaro uma variável com tipo de dado string
$variavel = 'Um valor qualquer';

Nota: Quando estamos escrevendo códigos em PHP e sabemos que não vamos precisar incluir HTML após o código que acabamos de escrever, não é necessário utilizar a tag de fechamento do PHP ?>. Existem alguns benefícios em torno da não utilização dessa tag, veja mais detalhes.

Como você pôde ver no trecho de código acima, criei uma variável com um valor qualquer em uma única linha de código (fora o comentário); ela foi declarada com um valor do tipo string automaticamente pelo interpretador do PHP (vamos falar sobre isso no decorrer do artigo).

Os tipos de dados em PHP são úteis por vários motivos em seu script; algumas vezes para saber se é um valor numérico ou para comparar valores entre duas variáveis; noutras por questões de segurança e prevenção de SQL Injection; enfim, poderíamos ficar aqui o dia todo criando uma infinidade de cenários, porém, o importante é que você entenda que é extremamente necessário saber o que são, como criar e como verificar se determinado valor é de determinado tipo na hora da execução do seu script.

Tipos de dados em PHP

O PHP suporta oito tipos de dados primitivos e três pseudo-tipos:

Tipos básicos

  • boolean
  • integer
  • float (número de ponto flutuante, ou também double)
  • string

Tipos compostos

  • Arrays
  • Objetos

Tipos especiais

  • resource
  • NULL

Pseudo-tipos

  • mixed
  • number
  • callback

Vamos ver mais detalhes sobre cada um dos tipos abaixo.

Boolean (Booleanos)

Este é o tipo de dado mais simples que uma variável pode receber em PHP, true (verdadeiro) ou false (false).

Para criar uma variável com valor booleano, simplesmente escreva qualquer um dos dois valores da maneira que preferir, já que o interpretador do PHP não faz distinção entre letras maiúsculas e minúsculas para as palavras chave true e false.

<?php
$variavel = True; // Verdadeiro
$variavel = TRUE; // Verdadeiro
$variavel = true; // Verdadeiro
$variavel = false; // Falso
$variavel = False; // Falso
$variavel = FALSE; // Falso

Perceba que as palavras chave não devem vir entre aspas.

Além disso, qualquer valor em PHP é automaticamente convertido em true ou false quando necessário.

Uma variável será considerada falsa (false) quando ela:

  • for o próprio booleano FALSE;
  • for 0 (zero);
  • for 0.0 (zero ponto zero);
  • for um valor vazio ou “0”;
  • for um array sem elementos;
  • for um objeto sem elementos membros;
  • for NULL (incluindo variáveis não definidas);
  • for o objeto SimpleXML criado de tags vazias

Diferente disso qualquer outro valor é considerado verdadeiro (true), incluindo números negativos.

Você pode verificar se uma variável é verdadeira ou falsa simplesmente utilizando a estrutura de controle if (que você verá posteriormente neste curso).

<?php
// Cria uma variável
$variavel = 'Oi';

// Verifica se a variável é verdadeira
if ( $variavel ) {
	echo $variavel;
}

No trecho acima, a variável tem o valor Oi (verdadeiro). O comando de controle de estrutura if vai verificar se ela é verdadeira ou falsa; caso verdadeira, mostra seu valor na tela do usuário; caso falsa, não faz nada.

Integers (Inteiros)

Os integers (int) são todos os números negativos e positivos, mais o número zero (…-2, -1, 0, 1, 2…).

São os números inteiros (do conjunto Z).

Não é necessário utilizar aspas ou apóstrofos para criar uma variável com um número inteiro em PHP:

<?php
$variavel = -15542;

Números negativos devem ser representados com um sinal negativo no início; números positivos não precisam receber sinal algum (opcionalmente, você pode adicionar um sinal de mais):

$variavel = -15542; // Negativo
$variavel = 15542; // Positivo

Os números inteiros podem ser especificados em notação decimal (base 10), hexadecimal (base 16) ou octal (base 8), porém, para usar a notação octal, é necessário começar o número com um 0 (zero). Para utilizar a notação hexadecimal, inicie o número com 0x.

Exemplos:

<?php
$variavel = +1234; // número positivo
$variavel = -1234; // número negativo
$variavel =  0123; // número octal (83 em decimal)
$variavel =  0x1A; // número hexadecimal (26 em decimal)

Float (Números de ponto flutuante)

Números de ponto flutuante (também chamados de “floats”, “doubles” ou “números reais”), são números que trazem o ponto para separar a parte inteira da parte fracionária.

Em PHP, qualquer um dos exemplos abaixo é válido:

<?php
$variavel = 1.234; 
$variavel = 1.2e3; 
$variavel = 7E-10;

Strings

Uma string é uma série de caracteres misturados incluídos entre aspas ou apóstrofos.

Por exemplo:

$variavel = 'Um frase é uma string'; // String
$variavel = 'Uma palavra com um número (10) também'; // String
$variavel = 'TRUE'; // String
$variavel = 'false'; // String

Todos os exemplos acima são do tipo string.

Arrays e Objetos

Como ainda não falamos sobre arrays e objetos em nossos artigos sobre PHP, não fará muito sentido detalhar trechos de código aqui, porém, entenda que arrays são mapas  que relacionam valores com chaves. Um array pode carregar vários tipos de dados diferentes, incluindo outros arrays.

Objetos são parecidos com arrays, no entanto, eles são recursos para a programação orientada a objetos (algo que você vai entender um pouco mais adiante, se continuar seguido nossos artigos).

Resource (Recurso)

Um recurso é uma variável especial que mantém uma referência a um recurso externo (por exemplo, uma conexão MySQL, etc). Recursos são criados e usados por funções especiais que podem ser encontradas aqui.

NULL (Nulo)

Valor NULL é um valor que não tem valor nenhum (hum ?), ou, representam variáveis vazias.

Uma variável é considerada NULL se:

  • ela foi criada com a constante NULL.
$variavel = NULL;
  • ela ainda não recebeu nenhum valor.
<?php
function funcao() {
	static $variavel; // NULL
}
  • ela foi apagada com unset()
<?php
$variavel = 'Oi';
unset( $variavel ); // NULL

Pseudo-tipo mixed

O Pseudo-tipo mixed indica que um parâmetro pode aceitar vários (mas não necessariamente todos) os tipos de dados.

Pseudo-tipo number

number indica que um parâmetro pode ser tanto um integer (número inteiro) quanto float (número de ponto flutuante).

Pseudo-tipo callback

São funções que podem ser definidas por usuários e passadas como parâmetros para outras funções do PHP.

gettype: descubra o tipo

Para saber qual o tipo de uma variável, você pode utilizar a função gettype do PHP, veja:

<?php
$variavel = 'Oi';

echo gettype( $variavel ); // string

No exemplo acima, executei o comando echo do PHP, com a função gettype, na variável que havia criado. O valor retornado foi “string”.

Os possíveis valores retornados serão:

  • “boolean”
  • “integer”
  • “double” (por razões históricas “double” é retornado no caso de float, e não simplesmente “float”)
  • “string”
  • “array”
  • “object”
  • “resource”
  • “NULL”
  • “unknown type”

Modificando os tipos de dados em PHP

Em alguns casos não será possível saber qual o tipo de valor que uma variável vai retornar, no entanto, você pode forçar o interpretador do PHP para tratar o valor conforme necessário.

Por exemplo: suponhamos que eu precise de um valor inteiro em uma variável cujo valor será retornado por um campo que o usuário digitar em um input no navegador de Internet. Se este valor deve (obrigatoriamente) ser inteiro, eu posso fazer com que o PHP converta o mesmo utilizando (int) ou (integer).

Veja um exemplo:

<?php
// Uma frase número e uma frase
$variavel = '2254: Olá!';

// O valor é convertido para inteiro
echo (int)$variavel; // Exibe: 2254

Eu posso fazer isso com qualquer tipo de valor, veja as possibilidades:

  • (int), (integer) – converte para inteiro
  • (bool), (boolean) – converte para booleano
  • (float), (double), (real) – converte para número de ponto flutuante
  • (string) – converte para string
  • (binary) – converte para string binária (PHP 6)
  • (array) – converte para array
  • (object) – converte para objeto
  • (unset) – converte para NULL (PHP 5)

Exemplos:

<?php
// Uma frase número e uma frase
$variavel = '2254.54 : Olá!';

echo (int)$variavel; // Exibe: 2254
echo (bool)$variavel; // Exibe: 1 (verdadeiro)
echo (float)$variavel; // Exibe: 2254.54
echo (string)$variavel; // Exibe: 2254.54 : Olá!

print_r( (array)$variavel ); // Exibe: Array ( [0] => 2254.54 : Olá! )
var_dump( (object)$variavel ); // Exibe: object(stdClass)#1 (1) { ["scalar"]=> string(15) "2254.54 : Olá!" } 

unset($variavel); // Não exibe nada

Vídeo tutorial

O vídeo tutorial abaixo é um complemento ao texto acima:

Link do vídeo: https://www.youtube.com/watch?v=OYooJzWaGrg

Aulas anteriores

Caso queira acessar os links para aulas anteriores:

Concluindo

Em caso de dúvidas, críticas, ou qualquer outra coisa que queira falar, basta deixar um comentário aí abaixo. Estamos ansiosos para ouvir a sua opinião.

Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.