Tipo de dado |
Descrição |
Int, Integer |
Numéricos, valores sem virgule |
Double, real |
Numéricos de ponto flutuante |
String |
Seqüência de caracteres |
Array |
Conjunto de valores |
Object |
Tipo de dado artificial, definido pelo usuário |
Tabela 1. Tipos de dados no PHP
Variáveis e nomes
Como já vimos nos exemplos discutidos nas seções anteriores, as variáveis em PHP são marcadas com o caractere ”$”. Diferentemente do Perl, o PHP marca todas as variáveis com um caractere “$” e não usa os caracteres “@” e “%” como símbolos.
Em PHP, os nomes de variáveis são sensitivas, o que significa que faz diferença se o nome é escrito com caracteres minúsculos ou maiúsculos. O nome de uma variável pode iniciar com um caractere de “a” a “z” ou com o caractere “_' (“underscore”). Depois do primeiro caractere, todas as demais letras e números, assim como o caractere “_” serão permitidos. Contudo, recomendo fortemente utilizar só letras no nome da variável, pois caso contrário, os programas ficarão confusos e difíceis de entender, sobretudo quando se misturam letras maiúsculas e minúsculas em nomes de variáveis. O exemplo a seguir, mostra que $a não será interpretado como $A:
<?php
$a = "Eu sou uma seqüência.";
$A = "Eu também sou uma seqüência.";
echo "a: $a; A: $A<br>\n";
?>
Como podemos ver no resultado, as duas frases não representam a mesma variável.
Reconhecimento automático de tipo de dados
Quando uma variável é processada pelo PHP, o interpretador segue algumas regras pré-estabelecidas para reconhecer que tipo de dado uma variável pertence:
? Se uma seqüência de caracteres inicia e termina com aspas simples, será tratada como um literal do tipo string: $a = ‘abc’ - atribui a seqüência “abc” a $a, pois a seqüência está entre aspas simples;
? Se um número não contiver um ponto decimal, é tratado como um valor inteiro: $a = 23, indica que o número inteiro 23 será atribuído a $a. O valor 23 é um valor inteiro porque não contém nenhum ponto decimal;
? Se um número contiver um ponto decimal, será tratado como um número de ponto flutuante: $a = 3.14159 faz com que o PHP atribua um valor ponto flutuante a $a;
O conhecimento dessas três regras torna fácil a previsão do resultado de uma operação e facilita a escrita de aplicações sem erros de codificação.
Verificação de tipos de dados e formatação explícita
Às vezes é necessário modificar explicitamente o tipo de dado de uma variável. Embora o PHP faça internamente a formatação de tipos em alguns casos poderia ajudar, caso seja necessário que uma variável seja atribuída com determinado tipo de dado. Para executar operações assim, o PHP fornece as funções necessárias. Antes de aprendermos sobre essas funções, veremos como podemos descobrir o tipo de dado de uma variável na Listagem 1.
Listagem 1. Verificando o tipo de uma variável
<?php
$a = 3.14159;
$b = 12;
$c = "Eu sou uma seqüência.";
$d = array(1, 2, 3);
echo '$a is a '.gettype($a)." value<br>\n";
echo '$b is an '.gettype($b)." value<br>\n";
echo '$c is a '.gettype($c)." value<br>\n";
echo '$d is an '.gettype($d)." value<br>\n";
?>
Com o auxílio da função chamada gettype, é possível recuperar facilmente o tipo de dado de uma variável. Se utilizarmos as regras descritas na seção anterior, será fácil prever o resultado do script:
$a is a double value
$b is an integer value
$c is a string value
$d is an array value
O primeiro valor é um valor ponto flutuante porque contém uma vírgula. O segundo é um valor inteiro porque não contém uma vírgula. O terceiro está entre aspas e por isso é tratado como um string. O último valor é um array, pois a expressão no lado direito do caractere “=”, retorna um array de valores inteiros.
Outro modo de verificar o tipo de dado de uma variável seria utilizar a função específica de tipo de dados como mostrado na Listagem 2.
Listagem 2. Outra forma de verificar um tipo de dado de uma variável
<?php
$a = 3.14159;
$b = 12;
$c = "Eu sou uma seqüência.";
$d = array(1, 2, 3);
echo '$a: '.is_double($a)."<br>\n";
echo '$b: '.is_integer($b)."<br>\n";
echo '$c: '.is_string($c)."<br>\n";
echo '$d: '.is_array($d)."<br>\n";
echo '$d: '.is_object($d)."<br>\n";
?>
Utilizamos as funções is_double, is_integer, is_string, is_array e is_object. Se o valor passado para a função tiver o tipo de dado apropriado, será retornado
$a: 1
$b: 1
$c: 1
$d: 1
$d:
Todos os valores menos o último serão “true”. A última linha mostra que $d não é um objeto.
Se executarmos uma formatação explícita, poderemos facilmente perder os dados armazenados na variável que desejamos formatar. Isto não representa um ponto fraco do PHP, pois a formatação não poderia ser feita de outra forma pelo interpretador PHP. (Listagem 3).
Listagem 3. Exemplo de formatação de variáveis
<?php
$a = 3.14159;
$b = 12;
$a_cast = (int)$a;
$b_cast = (double)$b;
echo "a_cast: $a_cast<br>";
echo "b_cast: $b_cast<br>";
?>
A variável $a é um número de ponto flutuante que é formatado para número inteiro e exibido na tela. A variável $b é formatada como double e exibida também na tela. Se observarmos o resultado, veremos que $a_cast não será tão preciso como $a_cast, pois não é permitido que um valor inteiro armazene os dígitos após a vírgula. As variáveis $b_cast e $b serão iguais, pois os números inteiros também podem ser representados como valores double sem perda de dados:
a_cast: 3
b_cast: 12
Algumas regras gerais e dicas devem ser levadas em consideração quando forem executadas formatações. A Tabela 2 contém uma compilação das informações mais importantes a respeito de formatações.
...