O PHP oferece diversos operadores aritméticos, que demonstro no código abaixo. A linha 12 declara a variável $a e lhe atribui o valor 5. A linha 16 chama a função define para criar uma constante nomeada. A função define utiliza dois argumentos: o nome e o valor da constante. Um terceiro argumento opcional aceita um valor bool, que especifica se a constante diferencia maiúscula de minúscula (por padrão, elas diferenciam).
<?php print( '<?xml version = "1.0" encoding = "utf-8"?>' ) ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!-- Usando operadores aritméticos. --> <html xmlns = "http://www.w3.org/1999/xhtml"> <head> <title>Usando operadores aritméticos</title> </head> <body> <?php $a = 5; echo "O valor da variável a é: $a <br />"; // define a constante VALUE define( "VALUE", 5 ); // adiciona a constante VALUE para a variável $a $a = $a + VALUE; echo "O valor da variável a após adicionar a constante VALUE é: $a <br />"; // multiplica a variável $a por 2 $a *= 2; echo "Multiplicando a variável por 2 temos: $a <br />"; // testa se a variável $a é menor que 50 if ( $a < 50 ) echo "Variável a é menor que 50 <br />"; // adiciona 40 para a variável $a $a += 40; echo "O valor da variável a após adicionar 40 é: $a <br />"; // testa se a variável $a é menor que 51 if ( $a < 51 ) echo "A variável a ainda é menor que 50<br />"; // testa se a variável $a está entre 50 e 100, inclusive elseif ( $a < 101 ) echo "Variável a está agora entre 50 e 100, inclusive <br />"; else echo "Variável a agora é maior que 100 <br />"; // imprime uma variável não inicializada echo "Usando uma variável antes de inicializar: $nothing <br />"; // $nothing é avaliado como "" // adiciona a constante VALUE para uma variável não inicializada $test = $num + VALUE; // $num é avaliado como 0 echo "Uma variável não inicializada somada com a constante VALUE temos: $test <br />"; // adicionar uma string para um inteiro $str = "3 dolares"; $a += $str; echo "Adicionando uma string para a variável a temos: $a <br />"; ?><!-- fim do script PHP --> </body> </html>
A linha 19 soma a constante VALUE à variável $a. A linha 23 usa o operador de atribuição de multiplicação *= para gerar uma expressão equivalente a $a = $a * 2 (atribuindo, assim, o valor 20 a $a). Os operadores de atribuição aritmética, como na tabela abaixo, são atalhos sintáticos. A linha 31 soma 40 ao valor da variável $a.
As variáveis não inicializadas têm o valor undef, que é avaliado com valores diferentes, dependendo do seu contexto. Por exemplo, quando undef é usado em um contexto numérico, como em $num na linha 48, ele é avaliado como 0. Ao contrário, quando undef é interpretado em um contexto de string, como em $nothing na linha 45, ele é avaliado como uma string vazia (“”).
Para evitar erros sutis, inicialize as variáveis antes que elas sejam usadas. Por exemplo, multiplicar um número por uma variável não inicializada resulta em 0. Se no seu arquivo php.ini o display_errors estiver setados como On, aparecerá uma mensagem de erro antes das linhas 45 e 49 como essa: “Notice: Undefined variable: nothing in C:\workspace\operators.php on line 45″.
As strings, quando usadas em operações aritméticas, são automaticamente convertidas para integers ou dobles. Na linha 53, uma cópia do valor da variável $str, “3 dolares”, é convertida para o inteiro 3 para uso no cálculo. O tipo e o valor da variável $str permanecem inalterados.
Operadores | Associatividade | Tipo |
---|---|---|
* / % | da esquerda para a direita | de multiplicação |
+ – | da esquerda para a direita | de adição |
< <= > >= | da esquerda para a direita | relacional |
== != | da esquerda para a direita | de igualdade |
= | da direita para a esquerda | de atribuição |
Referências
DEITEL, Paul; DEITEL, Harvey. Ajax, Rich Internet Applications e desenvolvimento Web para programadores. 1. ed. São Paulo: Pearson Prentice Hall, 2008. Cap. 19, p.463-464. Tradução: Célia Taniwaki e Daniel Vieira; Revisão técnica Daniel da Costa Uchôa.