Esse artigo faz parte da revista Clube Delphi Edição 90. Clique aqui para ler todos os artigos desta edição

owtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-table-layout-alt: fixed; mso-yfti-tbllook: 480; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellSpacing=0 cellPadding=0 border=1>

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 1. A listagem a seguir, contém o resultado do script que acabamos de ver:

 

$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.

 

...

Quer ler esse conteúdo completo? Tenha acesso completo