Tipos de dados
PHP suporta diferentes tipos de dados, porem eles são divididos em duas categorias escalar e composto.
Um valor escalar contem somente um valor de cada vez. PHP suporta quatro tipos escalares:
|
boolean
|
Um valor que possa somente ser verdadeiro ou falso.
|
|
int
|
Um numero de valor inteiro.
|
|
float
|
Um valor de ponto flutuante.
|
|
string
|
Uma coleção de dados binários.
|
Valores numéricos
PHP reconhece dois tipos de números, os inteiros e de valor ponto flutuante. O tipo de dados interno é usado para representar inteiros assinados (o significado que os números positivos e negativos podem ser expressados com ele). Os números podem ser declarados usando diversas notações diferentes:
|
Decimal
|
10; -11; 1452
|
Notação decimal padrão. Note que não é necessário ter separador de milhar, na verdade, é permitido.
|
|
Octal
|
0666, 0100
|
Notação octal, identificado pelo seu zero à esquerda
e utilizado principalmente para expressar UNIX-estilo de permissões de acesso.
|
|
Hexadecimal
|
0×123; 0XFF; -0×100
|
Notação base-16, veja que há dígitos hexadecimais e 0x são o prefixo principal e são case-insensitive, ou seja, podem ser escritos na forma maiúscula ou minúscula.
|
OBS: É importante você está bem ciente das diferentes notações, em particular, números octal que pode facilmente ser confundido com os números decimais e pode conduzir a algumas conseqüências.
Os números de pontos flutuantes (chamados também flutuadores e, às vezes, dobros) são os números que têm um componente fracionário; como inteiros, são assinados também. PHP suporta duas notações diferentes para expressá-las:
|
Decimal
|
0.12; 1234.43; -.123
|
Notação decimal tradicional.
|
|
Exponencial
|
2E7, 1.2e2
|
Exponencial de um conjunto de notação de dígitos significativos, seguido pelo
“E” que é case-insensitive, ou seja, podem ser escritos na forma maiúscula ou minúscula, seguido também de um exponente. O número resultante é expressado multiplicou por dez ao poder do exponente, para o exemplo, 1e2 iguais 100.
|
Há algumas coisas importantes de que você necessita estar sabendo ao tratar dos números. Primeiramente, a precisão e a escala de ambos os tipos varia de acordo com a plataforma na qual o seu script será executado. Para o exemplo, as plataformas 64-bit podem, dependendo de como PHP foi compilado, ser capazes de representar uma escala mais larga de números do inteiro do que plataformas 32-bit. O que é ruim, PHP não segue excessos, de modo que o resultado de uma operação aparentemente simples como uma adição possa ter conseqüências catastróficas na confiabilidade de sua aplicação.
Mais importante ainda, você necessita estar ciente que o tipo de dados de pontos flutuantes não é sempre capaz de representar números na maneira que você espera. Considere, o exemplo desta declaração muito simples:
echo (int) ((0.1 + 0.7) * 10);
Você esperaria que a expressão ((0.1 + 0.7) * 10) retornaria 8 (e, no fato, se você o imprimisse para fora sem a conversão do inteiro ). Entretanto, a indicação acima imprime 7. Isto acontece porque o resultado desta expressão aritmética simples é armazenado internamente como 7.999999 em vez de 8; quando o valor é convertido a interno, PHP trunca simplesmente afastado a parte fracionária, tendo por resultado um erro significativo (12.5%, para ser exato).
A lição que você precisa tirar de tudo isso é simples: saiba as limitações dos tipos de dados numéricos, e planejar em torno deles. Sempre que a precisão de cálculo é um fator relevante a funcionalidade de sua aplicação, você deve considerar usar as funções de precisão arbitrárias fornecidas pela extensão de BCMath (você pode a procurar por isso no seu manual de PHP) em vez de usar os tipos de dados internos do PHP.
Strings
Na cabeça de muitos programadores, strings são equivalentes a textos. Enquanto em algumas linguagens isto é, na verdade, o que acontece, em muitos outros (incluindo o PHP), a string é um dado muito limitado. Strings são na verdade uma coleção de dados binários podendo assim ser um texto, mas também pode ser o conteúdo de um arquivo de imagem, uma planilha eletrônica, ou mesmo uma gravação musical.
PHP fornece muitas funcionalidades para string, e estaremos falando sobre elas mais tarde.
Booleans
Um valor booleano só pode conter dois valores: verdadeiro ou falso. De uma maneira geral, Booleans são utilizados como base de operações lógicas, que são discutidas posteriormente.
Quando converter dados para o tipo booleano, várias regras especiais são aplicáveis:
- Um número (ou inteiro ou de ponto flutuante) torna-se convertido em um Booleano falso se o valor original é zero, e verdade de outra forma.
- Uma string é convertida em falso somente se ela estiver vazia ou se ele contém o único 0. Se ele contém quaisquer outros dados, até mesmo vários zeros, são convertidos para verdadeiro.
- Quando convertida para um número ou uma string, um Booleano 1 passa a ser verdadeiro, e 0 contrário.
Tipos De Dados Compostos
Além ao tipo de dados escalar que nós examinamos, PHP suporta dois tipos de dados compostos chamados porque são essencialmente recipientes de outros dados:
- Arrays são recipientes de dados de elementos ordenados; um array pode ser usado para armazenar e recuperar qualquer outro tipo de dados, incluindo números, valores booleanos, strings, objetos e até mesmo outras matrizes. Falaremos mais sobre arrays adiante.
- Objetos são recipientes de ambos os dados e código. Eles formam a base da programação orientada a objetos, e também serão aprofundadas adiante.
Outros tipos de dados
Além dos tipos de dados que temos visto até agora, PHP define alguns tipos adicionais
que são utilizados em situações especiais:
- NULL indica que uma variável não tem qualquer valor. A variável é considerada como NULL caso tenha sido atribuído o valor especial NULL, ou se ele ainda não tenha sido atribuído um valor, neste último caso, PHP poderá das um alerta de saída se você tentar usar a variável em uma expressão.
- O tipo de dados resourse é usado para indicar os recursos externos que não são usados de forma nativa pelo PHP, mas que estejam no contexto de uma operação, por exemplo, manipulação de arquivos ou manipular imagens.
Conversão entre tipos de dados
PHP toma cuidado de converter tipos de dados transparentes quando uma referência é usada em uma expressão. Entretanto, é possível forçar a conversão de um valor a um tipo específico usando os tipos operadores da conversão. Estes são simplesmente o nome do tipo de dados que pretende converter que será colocada entre colchetes antes de uma expressão. Por exemplo:
$x = 10.88;
echo (int) $x; // Outputs 10
Anote que um valor não pode ser convertido a alguns tipos especiais; para o exemplo, você não pode converter nenhum valor ao resoruse, você pode, entretanto, converter um resourse a um numérico ou array de tipos de dados, em que o PHP retornará o ID numérico do resouse, ou a string resourse de identificação seguido pelo recurso ID.