Conversão de tipos de dados no PHP
Criado em: 26/03/2010
No PHP é possível converter a variável de um tipo para outro. Para isso devemos utilizar os conversores de tipos, para fazer a conversão devemos utilizar o tipo pra qual devemos converter entre parênteses antes do nome da variável em que se deseja converter. No PHP possuímos os seguintes conversores:
Conversor | Função |
---|---|
(int) , (integer) |
converte para inteiro |
(bool) , (boolean) |
converte para booleano |
(float) , (double) , (real) |
converte para float |
(string) |
converte para string |
(array) |
converte para array |
(object) |
converte para objeto |
Conversão de dados para inteiros no PHP
Para converter um valor para inteiro como foi visto anteriormente basta utilizarmos um dos conversores de inteiro antes do valor. Observe o exemplo:
Conversão de float em inteiro
Quando convertemos um número de float, ponto flutuante, para inteiro ele sempre terá o seu valor truncado, ou seja, arredondado para baixo. Observe:
<?php $float = (int) 10.9; var_dump( $float ); echo '<br />' . PHP_EOL; $float2 = (int) 10.1; var_dump( $float2 ); ?>
Como você pode observar ambos os valores 10.9 e 10.1 foram convertidos para 10.
A função var_dump()
utilizada anteriormente além de exibir o valor da variável mostrará também o tipo da variável como você verá ao testar os exemplos, como estamos trabalhando com tipos de dados é ideal sabermos se o valor foi convertido ou não.
Conversão de string em inteiro
A conversão de string para inteiro depende do formato da string, assim o PHP avalia o formato da string caso não possua nenhum valor numérico será convertido para 0(zero). Caso possua valor numérico em sua primeira posição o valor será considerado caso o valor não seja na primeira posição será desconsiderado. Veja o exemplo:
<?php $string = (int) 'Muitas casas'; var_dump( $string ); // int(0) echo '<br />' . PHP_EOL; $string2 = (int) '10 casas aproximadamente'; var_dump( $string2 ); // int(10) echo '<br />' . PHP_EOL; $string3 = (int) 'Exatamente 10 casas'; var_dump( $string3 ); // int(0) ?>
Conversão de booleano em inteiro
A conversão de booleano para string segue uma regra simples em que o valor TRUE
é definido como 1(um) e o valor FALSE
é definido como 0(zero). Observe:
<?php $bool = (int) TRUE; var_dump( $bool ); echo '<br />' . PHP_EOL; $bool2 = (int) FALSE; var_dump( $bool2 ); ?>
Conversão de dados para float no PHP
A conversão para float como pode ser observado anteriormente na tabela é feita pelos conversores (float)
, (double)
ou (real)
. As regras de conversão para float seguem as mesmas que você acabou de ver na conversão de dados para inteiros. Exceto na conversão para strings.
Conversão de string em float
Na conversão para float a string será avaliada como um ponto flutuante se conter qualquer um dos caracteres '.
', 'e
', ou 'E
', lembrando que a string deve ser iniciada com um número. Caso contrário será convertido para 0(Zero), lembrando que este zero será um float devido a conversão. Observe:
<?php $string = (float) '1.75cm'; var_dump( $string ); // float(1.75) echo '<br />' . PHP_EOL; $string2 = (float) 'Ele possuia 1.75cm'; var_dump( $string2 ); // float(0) ?>
Conversão de dados para strings no PHP
Para converter um dado para string você já deve estar imaginando que basta utilizar o conversor (string)
e é exatamente isto.
Conversão de booleano em string
Quando convertemos um valor booleano para string ocorre uma simples regra o valor TRUE
será convertido na string 1 e o valor FALSE
será convertido em uma string vazia. Observe:
<?php $bool = (string) TRUE; var_dump( $bool ); // string(1) "1" echo '<br />' . PHP_EOL; $bool2 = (string) FALSE; var_dump( $bool2 ); // string(0) "" ?>
Conversão de inteiro e float em string
Na conversão de inteiro e float o número será convertido para string mantendo a sua representação. Observe:
<?php $inteiro = (string) 150; var_dump( $inteiro ); // string(3) "150" echo '<br />' . PHP_EOL; $float = (string) 1.77; var_dump( $float ); // string(4) "1.77" ?>
Conversão de dados para booleano no PHP
Na conversão de dados para booleano os seguintes valores serão considerados FALSE
(falso):
- O próprio booleano
FALSE
- O inteiro 0 (zero)
- O ponto flutuante 0.0 (zero)
- Uma string vazia e a string "0"
Qualquer outro valor será convertido em TRUE
(verdadeiro), observe:
<?php $bool = (bool) FALSE; var_dump( $bool ); // bool(false) echo '<br />' . PHP_EOL; $inteiro = (bool) 0; var_dump( $inteiro ); // bool(false) echo '<br />' . PHP_EOL; $float = (bool) 0.0; var_dump( $float ); // bool(false) echo '<br />' . PHP_EOL; $string = (bool) ''; var_dump( $string ); // bool(false) echo '<br />' . PHP_EOL; $inteiro = (bool) 10; var_dump( $inteiro ); // bool(true) echo '<br />' . PHP_EOL; $float = (bool) 1.0; var_dump( $float ); // bool(true) echo '<br />' . PHP_EOL; $string = (bool) 'Uma string'; var_dump( $string ); // bool(true) ?>
Conversão automática de tipos de dados no PHP
Apesar de existirem os conversores que acabamos de ver o PHP também possui a conversão automática de tipos que funciona seguindo as mesmas regras que acabamos de ver observe.
<?php $soma = 10 + 3.5; var_dump( $soma ); // float(13.5) echo '<br />' . PHP_EOL; $soma = 10 + 7.0; var_dump( $soma ); // float(17) echo '<br />' . PHP_EOL; $soma = 10 + FALSE; var_dump( $soma ); // int(10) echo '<br />' . PHP_EOL; $soma = 1 + '7.5'; var_dump( $soma ); // float(8.5) echo '<br />' . PHP_EOL; $soma = 1 + '-7.5 graus celcius'; var_dump( $soma ); // float(-6.5) echo '<br />' . PHP_EOL; $soma = 1 + 'Luanito 20 anos'; var_dump( $soma ); // int(1) echo '<br />' . PHP_EOL; $soma = '20 anos de carreira' + 1; var_dump( $soma ); // int(21) ?>
Como você pode observar se utilizarmos float e inteiro em uma operação o resultado final será float, o valor FALSE
possui o valor 0 (zero) os dados seguiram se as mesmas regras de conversão, inclusive as strings que só as iniciadas com valores numéricos são validas para operações matemáticas, ou seja as regras válidas nas conversões de dados também são aplicadas aqui na conversão automática de tipos.
Não utilizamos os conversores para array e nem para objeto como você pode observar, mais não se preocupe assim que estes dados forem estudados mostraremos a conversão dos mesmos.