Todo programa de computador precisa lidar de alguma forma com certos tipos de operações, sejam elas de lógica, sejam elas aritméticas ou qualquer outro tipo de operação que o programa for executar, em PHP temos vários tipos de operadores, para vários casos, abaixo vamos estudar um pouco destes operadores.

 

Operadores Aritméticos

Estes operadores são responsáveis por realizar operações matemáticas em nosso programa, no último post vimos em alguns exemplos um fórmula matemática para cálculo de médias de alunos, nela temos alguns operadores aritméticos, aqui temos um detalhamento de cada um deles:

Primeiro, os operadores aritméticos possíveis no PHP são os seguintes:

OperadorNomeExemploDescrição
-Negação-$aInverte o valor da variável
+Soma$a+$bSoma o valor das duas variáveis
-Subtração$a-$bSubtrai o valor de $b do valor de $a
*Multiplicação$a*$bMultiplica o valor das duas variáveis
/Divisão$a/$bDivide $a por $b
%Módulo$a%$bObtém o resto da divisão de $a por %b, por exemplo:
5/4 = 2 (resto 1)
**Exponencial$a**$bEleva $a a $b, este operador somente está disponível a partir do PHP 5.6, é o equivalente a função pow($a, $b);

Em PHP todo operador tem uma  precedência, ou seja, alguns operadores tem maior prioridade de execução que outros, sendo assim são executados primeiro.

O exemplo abaixo mostra um cálculo básico:

Para aqueles que não se lembram, este é o cálculo do delta de uma equação do segundo grau. Independente da fórmula, o importante para a gente são os operadores, os operadores aritméticos do PHP obedecem a mesma precedência da matemática, ou seja, cálculos mais complexos são executados primeiro e depois os mais simples, no exemplo acima o cálculo realmente executado seria o seguinte:

Se observarmos com calma veremos que é o mesmo cálculo, sendo assim podemos notar que a multiplicação tem precedência sobre a subtração, ou seja, ela é calculada primeiro e a subtração depois.

O mesmo ocorre com a divisão e adição, então temos a seguinte ordem de precedência (da maior  para a menor prioridade):

  1. Exponencial (**)
  2. Divisão (/), Multiplicação (*) e Módulo (%)
  3. Adição (+), Subtração (-)

Assim como na matemática, quando desejamos mudar a precedência, isolamos os termos ou operação entre parênteses, o exemplo abaixo mostra isso:

Olhando o exemplo vemos que no valor da variável $calculo2, estamos “forçando” que a adição seja executada primeiro e depois a multiplicação, sendo assim, o que fizemos foi mudar a precedência das operações. Podemos utilizar quantos parênteses forem necessários para que o comportamento que esperamos seja alcançado.

 

Alguns comportamentos da linguagem

Uma divisão em PHP sempre terá como resultado um número de ponto flutuante, a menos que o resultado desta divisão seja um número inteiro, por exemplo:

Esse comportamento se difere um pouco de algumas outras linguagens, principalmente as com tipagem forte, onde o resultado de uma divisão sempre será do mesmo tipo dos operandos (no exemplo acima teríamos para a segunda saída também o número 2, sendo eliminados os decimais), onde deveríamos passar um dos operandos como  ponto flutuante, caso desejássemos obter um resultado também em ponto flutuante.

Quando executamos uma operação de módulo, o número é convertido para inteiro antes de realizar o processamento, ou seja, se usarmos o número 15.23, o decimal .23 será ignorado no processamento do calculo.

Vejamos um exemplo:

Obs.: Usar módulos com números de ponto flutuante, pode trazer resultados imprevisíveis em algumas ocasiões, para estes números é aconselhável o uso da função fmod().

Ainda em módulos, quando trabalhamos com sinais, o sinal que prevalecerá sempre para o resultado é aquele que estiver no primeiro operando (dividendo), sendo assim:

Vale lembrar ainda que os números reais (float / double) em linguagens de programação exigem um tratamento um pouco diferenciado, pois alguns decimais não possuem representação binária, o que pode causar resultados equivocados em nosso código, conforme falado no post sobre tipos de dados. E neste caso, o recomendado é que utilizemos bibliotecas com precisão arbitrária, no caso do PHP a biblioteca BCMath  abordaremos esta biblioteca mais adiante em nossa série.

Para finalizar os operadores aritméticos, temos o operador de negação, que serve para inverter o sinal do valor de uma variável, abaixo um exemplo:

 

Operador de  Strings

O PHP, diferentemente de algumas outras linguagens, tem um operador diferenciado para a concatenação de strings, este operador é o “.” (ponto), ele serve para juntar duas ou mais strings, transformando-as em uma só.

Por exemplo:

No exemplo acima, concatenamos duas variáveis que contém strings, com uma terceira string (um espaço em branco também é considerado uma string), podemos notar que o “.” junta todas elas transformando-as em uma nova string.

 

Operadores de Atribuição

Os operadores de atribuição são usados para definirmos valores, geralmente são utilizados em conjunto com outros operadores, como os aritméticos.

O mais básico dos operadores de atribuição é o símbolo de “=” (igualdade), através dele podemos atribuir um valor a uma variável, por exemplo:

Podemos observar que a direção que o operador de atribuição trabalha é da direita para a esquerda, ou seja, o que está do lado direito do operador de atribuição será associado ao que está do lado esquerdo, vejamos o exemplo a seguir:

O operador de igualdade pode ser utilizado em conjunto com qualquer um dos operadores aritméticos ou de concatenação de strings, sendo comum utilizamos ele da seguinte forma:

Em um array associativo do PHP o operador => pode ser utilizado durante a declaração do array para atribuir os valores a suas respectivas chaves, vejamos:

Bom, para este post não ficar muito extenso, vamos ficando nestes operadores por hora, veremos os demais operadores, conforme estes forem se fazendo necessários, espero que o conteúdo seja de proveito para todos, se sim, compartilhe.

Acha que faltou algo, alguma sugestão ou dúvida? Deixe nos comentários.

Até o próximo post da série.

Sobre Rodrigo Teixeira Andreotti

Técnico em Informática formado pela ETE Lauro Gomes
Cursando atualmente o curso de Análise e Desenvolvimento de sistemas.

Atuo como programador PHP há, pelo menos, 6 anos, sendo os dois últimos em empresas e os demais como Freelancer.