O tipo Integer
Conversão para Inteiro
Uma característica interessante de PHP é a facilidade de converter valores entre os diferentes tipos. Mas você sabe o que ocorre com um valor quando é convertido para inteiro?
De um Float
Quando um valor real é convertido para inteiro, suas casas decimais são ignoradas.
Observe que você não pode dizer que o valor é arredondado para baixo, já que para valores negativos ele é arredondado para cima (para um valor menos negativo).
De um Bool
O valor true é convertido para o inteiro 1 (um), enquanto o valor false é convertido para o inteiro 0 (zero).
De um Array
Vetores vazios são convertidos para o inteiro 0 (zero), enquanto os vetores não vazios são convertidos para o inteiro 1 (um).
De uma String
A conversão de uma string para inteiro é a mais complexa. A string é analisada da esquerda para a direira. A porção da string que pode ser capturada (a partir do primeiro caractere) e pode ser interpretada como um inteiro, é usada para converter o valor para inteiro. Ou seja, assim que um caractere estranho (por exemplo, uma letra ou um símbolo) é encontrado, tudo o que está a esquerda é ignorado. Uma exceção é com o sinal de menos, para representar um número negativo. Quando nenhuma porção da string pode ser capturada (da esquerda para direita), então o valor é interpretado como zero.
De um Object
Objetos não podem ser convertidos em Inteiro.
Uma característica interessante de PHP é a facilidade de converter valores entre os diferentes tipos. Mas você sabe o que ocorre com um valor quando é convertido para inteiro?
De um Float
Quando um valor real é convertido para inteiro, suas casas decimais são ignoradas.
$i = intval(0.1); // $i = 0; $i = intval(0.5); // $i = 0; $i = intval(0.9); // $i = 0; $i = intval(4.1); // $i = 4; $i = intval(4.9999999); // $i = 4; $i = intval(-1.1); // $i = -1; $i = intval(-1.9); // $i = -1;
Observe que você não pode dizer que o valor é arredondado para baixo, já que para valores negativos ele é arredondado para cima (para um valor menos negativo).
De um Bool
O valor true é convertido para o inteiro 1 (um), enquanto o valor false é convertido para o inteiro 0 (zero).
$i = intval(true); // $i = 1; $i = intval(false); // $i = 0;
De um Array
Vetores vazios são convertidos para o inteiro 0 (zero), enquanto os vetores não vazios são convertidos para o inteiro 1 (um).
$i = intval(array(3, 5, 2)); // $i = 1; $i = intval(array()); // $i = 0;
De uma String
A conversão de uma string para inteiro é a mais complexa. A string é analisada da esquerda para a direira. A porção da string que pode ser capturada (a partir do primeiro caractere) e pode ser interpretada como um inteiro, é usada para converter o valor para inteiro. Ou seja, assim que um caractere estranho (por exemplo, uma letra ou um símbolo) é encontrado, tudo o que está a esquerda é ignorado. Uma exceção é com o sinal de menos, para representar um número negativo. Quando nenhuma porção da string pode ser capturada (da esquerda para direita), então o valor é interpretado como zero.
$i = intval('0'); // 0 $i = intval('a'); // 0 $i = intval('1'); // 1 $i = intval('01'); // 1 $i = intval('012'); // 12 $i = intval('13a14'); // 13 $i = intval('a123'); // 0 $i = intval('12 13 14'); // 12 $i = intval('-12 -13 -14'); // -12
De um Object
Objetos não podem ser convertidos em Inteiro.
Novo Comentário: