Pseudo-tipos e variáveis utilizados nesta documentação
Variáveis
Tipos
PHP Manual

## Manipulação de tipos

O PHP não requer (ou suporta) a definição de tipo explícita na declaração de variáveis: o tipo de uma variável é determinado pelo contexto em que a variável é utilizada. Isto significa que, se você atribuir um valor string para a variável `$var`, `$var` se torna uma string. Se você então atribuir um valor inteiro para `$var`, ela se torna um inteiro.

Um exemplo da conversão automática do PHP é o operador de adição '+'. Se qualquer um dos operadores for float, então todos os operadores são avaliados como floats, e o resultado será um float. De outra forma, se os operadores forem interpretados como integers então o resultado será um integer. Note que isso não muda os tipos dos operadores: apenas muda em como esses operadores são avaliados.

`<?php
$foo = "0"; // $foo é string (ASCII 48)
$foo += 2; // $foo é agora um interio (2)
$foo = $foo + 1.3; // $foo é agora um float (3.3)
$foo = 5 + "10 pequenos porcos"; // $foo é inteiro (15)
$foo = 5 + "10 minúsculos porcos"; // $foo é inteiro (15)
?>`

Se os últimos dois exemplos lhe parecerem estranhos, veja Conversão de strings para números.

Para forçar uma variável para ser avaliada como um certo tipo, veja a seção Moldando o tipo (casting). Se você deseja mudar o tipo de uma variável, veja settype().

Para testar qualquer um dos exemplo desta seção, você pode usar a função var_dump().

> Nota:

> O comportamento de uma conversão automática para array é atualmente indefinida.

> Também, pelo PHP suporta indexação em strings via índice usando a mesma sintaxe de array, o seguinte exemplo é válido para todas versões do PHP:

> `<?php
> $a = 'car'; // $a é uma string
> $a[0] = 'b'; // $a é ainda uma string
> echo $a; // bar
> ?>`

> Veja a seção entitulada Acessando caracteres da string para mais informações.

### Conversão de Tipos - Type Casting

A conversão de tipos no PHP funciona como no C: o nome de um tipo desejado é escrito entre parênteses antes da variável em que se deseja a moldagem.

`<?php
$foo = 10; // $foo é um inteiro
$bar = (boolean) $foo; // $bar é um booleano
?>`

As moldagens permitidas são:

- (int), (integer) - molde 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)

(binary) e o prefixo b é foram adicionados no PHP 5.2.1

Note que tabulações e espaços são permitidos dentro dos parênteses, então o seguinte são funcionalmente equivalentes:

`<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>`

Convertendo uma string literal e variáveis para strings binárias:

`<?php
$binary = (binary)$string;
$binary = b"binary string";
?>`

> Nota:

> Em vez de converter uma variável para string, você também pode englobar a variável entre aspas duplas.

> `<?php
> $foo = 10; // $foo é um interio
> $str = "$foo"; // $str é uma string
> $fst = (string) $foo; // $fst tambem é uma string
> // Isto imprimirah "eles são o mesmo"
> if ($fst === $str) {
> echo "eles são o mesmo";
> }
> ?>`

Pode não ser tão óbvio o que exatamente ocorre quando se converte entre certos tipos. Para mais informações, veja essas seções:

- Convertendo para booleano
- Convertendo para integer
- Convertendo para float
- Convertendo para string
- Convertendo para array
- Convertendo para objeto
- Convertendo para resource
- Convertendo para NULL
- Tabela de comparação entre tipos

Pseudo-tipos e variáveis utilizados nesta documentação
Variáveis
Tipos
PHP Manual