Mudanças de tipo de variável (malabarismo)
O PHP não exige (ou não suporta) a especificação do tipo de variável na variável declarada, o tipo de uma variável é determinado pelo contexto em que a variável é usada, ou seja, se você atribuir uma string a uma variável var O valor; de var se torna uma variável de string. Se você atribuir um número inteiro a var, ele se tornará uma variável inteira.
Um exemplo de PHP convertendo automaticamente tipos de variáveis é o operador de adição '+'. Se qualquer operando for duplo, todos os operandos serão avaliados como duplos e o resultado também será duplo. Caso contrário, os operandos serão considerados inteiros e o resultado será um inteiro. Observe que isso não afeta o tipo de variável de cada operando em si, a única alteração é a forma como os operandos são processados durante o cálculo.
$foo = "0"; // $foo é uma string com valor "0" (ASCII 48)
$foo++; // $foo é uma string com valor "1" (ASCII 49)
$foo +=; 1; // $foo agora é um número inteiro (2)
$foo = $foo + 1.3; // $foo é agora um número inteiro (3.3)
$foo = 5 + "10 Little Piggies"; (15)
$foo = 5 + "10 Porquinhos" // $foo é um número inteiro (15);
Se você acha que as duas últimas expressões do exemplo acima parecem um pouco estranhas, consulte a seção "Conversão de String".
Se você deseja forçar uma variável a ser avaliada como um tipo fixo, consulte a seção "Conversão". Se desejar alterar o tipo de uma variável, consulte a descrição da função "settype()".
Determine o tipo de uma variável
Como o próprio PHP determina os tipos de variáveis e geralmente as lança conforme necessário, o tipo de uma variável específica nem sempre é óbvio. PHP inclui funções para descobrir o tipo desta variável. Essas funções são gettype(), is_long(), is_double(), is_string(), is_array() e is_object().
tipo de fundição
A coerção de tipo em PHP é aproximadamente a mesma que na linguagem C: escreva o tipo necessário entre parênteses na frente da variável a ser coagida.
$foo = 10; // $foo é um número inteiro
$bar = (double) $foo;
Os seguintes métodos de coerção são permitidos:
(int), (inteiro) – coagir para inteiro
(real), (duplo), (float) – forçar a dobrar
(string) – forçar a string
(matriz) – forçar a matriz
(objeto) – coagir a objetar
Observe que tabulações e espaços são permitidos entre parênteses, portanto as seguintes instruções são equivalentes:
$foo = (int) $bar;
$foo = (int) $bar;
Conversão de string
Quando uma string é avaliada como um valor numérico, seu resultado e tipo são determinados conforme descrito abaixo.
Se esta string contiver os caracteres '.', 'e' ou 'E', ela será tratada como uma variável de tipo duplo, caso contrário, será tratada como um número inteiro.
O valor desta string é determinado pelo prefixo. Se a sequência começar com quaisquer dados numéricos válidos, os dados numéricos serão o valor no qual a sequência será avaliada. Caso contrário, o valor é zero. Os dados numéricos válidos seguem a seguinte notação, seguidos por um ou mais dígitos (que podem incluir um ponto decimal), seguidos por um expoente opcional. O expoente é formado por um ou mais dígitos seguidos de 'e' ou 'E'.
$foo = 1 + "10,5"; // $foo é um duplo (11,5)
$foo = 1 + "-1.3e3"; // $foo é um duplo (-1299)
$foo = 1 + "bob -1,3"; e3"; // $foo é um número inteiro (1)
$foo = 1 + "bob3"; // $foo é um número inteiro (1)
$foo = 1 + "10 Porquinhos"; // $foo é um número inteiro ( 11)
$foo = 1 + "10 Little Piggies";//
$foo é um número inteiro (11);
Para obter mais informações, consulte a seção do manual Unix sobre strtod(3).