O PHP pode converter o tipo de dado de uma variável, se necessário, dado o contexto em que é usado automaticamente. Por esta razão tipo explícito conversões são raramente necessário. No entanto, o tipo de uma variável ou expressão pode ser alterada através da realização de um tipo “cast explícito” ou Conversão explícita.
Conversões explícitas
Uma conversão explícita é realizada colocando-se o tipo de dados desejado entre parênteses antes da variável ou o valor que está a ser avaliada. No exemplo abaixo, o cast explícito força a variável bool para ser avaliada como um int.
<?php
$myBool = false;
$myInt = (int)$myBool; // 0
?>Um uso para conversões explícitas podem ser vistas quando a variável bool é enviado como saída para a página. Devido ao tipo automático conversões o valor false se torna uma vazia e portanto não é exibido. Ao primeiro convertê-lo para um número inteiro, o valor false vai aparecer como zero.
<?php
echo $myBool; // ""
echo (int)$myBool; // "0"
?>Tipos de cast estão listados na tabela abaixo.
| Nome | Descrição |
| (int), (integer) | Cast para int |
| (bool), (boolean) | Cast para bool |
| (float), (double), (real) | Cast para float |
| (string) | Cast para string |
| (array) | Cast para array |
| (object) | Cast para object |
| (unset) | Cast para null |
Para dar alguns exemplos, o cast array irá converter um tipo escalar para uma matriz com um único elemento. Ele executa a mesma função que usando o construtor array.
<?php
$myInt = 10;
$myArr = (array)$myInt;
$myArr = array($myInt); // o mesmo que acima
echo $myArr[0]; // "10"
?>Se um tipo escalar como int é convertido em objeto torna-se uma instância da classe interna stdClass. O valor da variável será armazenado em uma propriedade desta classe chamada escalar.
<?php
$myObj = (object)$myInt;
echo $myObj->scalar; // "10"
?>O cast faz a variável unset ser nulo. Apesar do nome, ele realmente não retirar a variável. O cast só existe para complementar, como nulo é considerado um tipo de dados.
<?php
$myNull = (unset)$myInt;
$myNull = null; // o mesmo que acima
?>Settype
Uma conversão explícita não altera o tipo da variável que precede, apenas como ela é avaliada em que expressão. Para alterar o tipo de uma variável a função settype pode ser usado, levando dois argumentos. O primeiro é a variável a ser convertida e o segundo é o tipo de dados dada como uma string.
$myVar = 1.2; settype($myVar, 'int'); // convert variable to int
Alternativamente, um tipo de conversão pode ser realizada armazenando o resultado de uma conversão explícita de volta na mesma variável.
$myVar = 1.2; $myVar = (int)$myVar; // 1
Gettype
Relacionado a settype é a função gettype, que retorna o tipo da fornecida argumento como uma string legível.
$myBool = true; echo gettype($myBool); // "boolean"












