Tutorial PHP: Operadores Aritméticos, de String e de Atribuição

Tutorial PHP: Operadores Aritméticos, de String e de Atribuição

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:

<?php
$delta= $b * $b - 4 * $a * $c;

 

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:

<?php
$quadradoDeB = $b * $b;

$quatroXaXc = 4 * $a * $c;

$delta = $quadradoDeB - $quatroXaXc;

 

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:

<?php
$calculo1 = 10 + 5 * 10;

$calculo2 = (10 + 5) * 10;

echo $calculo1; // Exibirá 60
echo $calculo2; // Exibirá 150

 

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:

<?php

echo 14/7; // Mostrará 2
echo 15/7; // Mostrará 2.1428571428571

 

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:

<?php
echo 15%2; // Mostrará 1
echo 15.23%2.15; // Mostrará 1 também, pois os decimais dos dois será ignorado

 

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:

<?php
echo -15%2; // Mostrará -1
echo -15%-2; // Mostrará -1
echo 15%-2; // Mostrará 1

 

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:

<?php
$a = -15;
$b = 10;

echo -$a; // Mostrará 15
echo -$b; // Mostrará -10

 

 

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:

<?php
$string1 = 'Hello';
$string2 = 'World';

$stringFinal = $string1 . ' ' . $string2;

echo $stringFinal;

 

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:

<?php
$a = 5;
$b = $a + 10;
$c = $b / 5;

 

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:

<?php

$a = $b = $c = 5;
// Neste exemplo a variável $c recebe o valor 5
// Por sua vez, a variável $b recebe o valor da variável $c
// E por fim, a variável $a recebe o valor da variável $b

 

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:

<?php

$a = 5;
$a += 10; // Isso soma 10 ao valor original de $a. (seria o equivalente a $a = $a + 10;)
// O mesmo pode ser feito com os demais operadores aritméticos

$b = 'Isso é uma ';
$b .= 'String'; // Isso concatena o valor 'String' ( Seria o equivalente a $b = $b . 'String';)

 

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:

<?php
// Operadores de atribuição dentro da declaração do array.
$meuArray = array(
'A1' => 8.0,
'A2' => 9.5,
'media' => 8,75
);

// Pode ser usado desta forma
$meuArray2 = array();
$meuArray2['A1'] = 8.0;
$meuArray2['A2'] = 9.5;
$meuArray2['media'] = 8,75;

 

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 ETEC Lauro Gomes Analista de Sistemas Pela universidade Metodista. Impacta Certified Specialist - Linux Programador PHP desde 2007, atuando em diversos projetos de sistemas internos, migrações, desenvolvimento de API's e sites públicos tanto como freelancer quanto com contrato com empresas. Também atuante como administrador Linux, administrando dois servidores próprios com CentOS, além de prestar serviços de administração e manutenção em servidores para algumas empresas.



Tutorial PHP: Operadores Aritméticos, de String e de Atribuição

Tutorial PHP: Operadores Aritméticos, de String e de Atribuição

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:

<?php
$delta= $b * $b - 4 * $a * $c;

 

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:

<?php
$quadradoDeB = $b * $b;

$quatroXaXc = 4 * $a * $c;

$delta = $quadradoDeB - $quatroXaXc;

 

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:

<?php
$calculo1 = 10 + 5 * 10;

$calculo2 = (10 + 5) * 10;

echo $calculo1; // Exibirá 60
echo $calculo2; // Exibirá 150

 

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:

<?php

echo 14/7; // Mostrará 2
echo 15/7; // Mostrará 2.1428571428571

 

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:

<?php
echo 15%2; // Mostrará 1
echo 15.23%2.15; // Mostrará 1 também, pois os decimais dos dois será ignorado

 

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:

<?php
echo -15%2; // Mostrará -1
echo -15%-2; // Mostrará -1
echo 15%-2; // Mostrará 1

 

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:

<?php
$a = -15;
$b = 10;

echo -$a; // Mostrará 15
echo -$b; // Mostrará -10

 

 

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:

<?php
$string1 = 'Hello';
$string2 = 'World';

$stringFinal = $string1 . ' ' . $string2;

echo $stringFinal;

 

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:

<?php
$a = 5;
$b = $a + 10;
$c = $b / 5;

 

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:

<?php

$a = $b = $c = 5;
// Neste exemplo a variável $c recebe o valor 5
// Por sua vez, a variável $b recebe o valor da variável $c
// E por fim, a variável $a recebe o valor da variável $b

 

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:

<?php

$a = 5;
$a += 10; // Isso soma 10 ao valor original de $a. (seria o equivalente a $a = $a + 10;)
// O mesmo pode ser feito com os demais operadores aritméticos

$b = 'Isso é uma ';
$b .= 'String'; // Isso concatena o valor 'String' ( Seria o equivalente a $b = $b . 'String';)

 

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:

<?php
// Operadores de atribuição dentro da declaração do array.
$meuArray = array(
'A1' => 8.0,
'A2' => 9.5,
'media' => 8,75
);

// Pode ser usado desta forma
$meuArray2 = array();
$meuArray2['A1'] = 8.0;
$meuArray2['A2'] = 9.5;
$meuArray2['media'] = 8,75;

 

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 ETEC Lauro Gomes Analista de Sistemas Pela universidade Metodista. Impacta Certified Specialist - Linux Programador PHP desde 2007, atuando em diversos projetos de sistemas internos, migrações, desenvolvimento de API's e sites públicos tanto como freelancer quanto com contrato com empresas. Também atuante como administrador Linux, administrando dois servidores próprios com CentOS, além de prestar serviços de administração e manutenção em servidores para algumas empresas.