Operadores no PHP

Agora que já sabemos como criar nossa variáveis e definir seus valores, vamos falar sobre os operadores, que são de extrema importância para desenvolver os seus códigos e montar as lógicas de seus scripts. Os operadores são símbolos que atuam sobre as varíaveis e valores. Ou seja, você alimenta ele com um ou mais valores e ele te retorna com outro valor.

Os operadores se dividem nas seguintes categorias:



Operadores Aritméticos

Este tipo de operador só pode ser utilizado quando os operandos são números (integer ou float). Caso não sejam, eles serão convertidos antes da realização da operação. Basicamente são os operadores de cálculos. Veja abaixo:

Exemplo Nome Resultado
-$a Negação Oposto de $a.
$a + $b Adição Soma de $a e $b.
$a – $b Subtração Diferença entre $a e $b.
$a * $b Multiplicação Produto de $a e $b.
$a / $b Divisão Quociente de $a por $b.
$a % $b Módulo Resto de $a dividido por $b.

Exemplos de Operadores Aritméticos:

<?php
$a = 2;
$b = 3;

$adicao = $a + $b; // $adicao = 5
$subtracao = $a - $b; // $subtracao = -1
$multiplicacao = $a * $b; // $multiplicacao = 6
$divisao = $a / $b; // $divisao = 0.66666666666667
$modulo = $a % $b; // $modulo = 2

echo "Adição: $adicao <br />";
echo "Subtração: $subtracao <br />";
echo "Multiplicação: $multiplicacao <br />";
echo "Divisão: $divisao <br />";
echo "Módulo: $modulo <br />";
?>


Operadores de Atribuição

Este operador é identificado pelo símbolo “=“. A princípio, você deve estar pensando que significa “é igual“, mas não é bem assim. Você deve entender que o primeiro operando (da esquerda) recebe o valor da expressão da direita. Vejamos a tabela abaixo:

Símbolo Tipo
= atribuição simples
+= atribuição com adição
-= atribuição com subtração
*= atribuição com multiplicação
/= atribuição com divisão
%= atribuição com módulo
.= atribuição com concatenação

Exemplos de Operadores de Atribuição

<?php
$a = 2; // Atribuição simples
$b = 3; // Atribuição simples
$c = 4; // Atribuição simples

$a += $a; // Atribuição com soma - (2+2) $a = 4;
echo "A=$a <br />";

$a -= $b; // Atribuição com subtração - (4-3) $a = 1;
echo "A= $a <br />";

$b *= $b; // Atribuição com multiplicação - (3*3) $b = 9;
echo "B= $b <br />";

$b /= $b; // Atribuição com divisão - (9/9) $b = 1;
echo "B= $b <br />";

$b %= $b; // Atribuição com módulo - (1%1) $b = 0;
echo "B=$b <br />";

$nome = "Diego"; // Atribuição simples
$nome .= " Macêdo"; // Atribuição com concatenação
echo $nome;
?>


Operadores Bit-a-Bit

Estes operadores comparam dois números bit-a-bit, ou seja, eles permitem que você acione ou desligue bits específicos dentro de um número inteiro. Se ambos os parâmetros da esquerda e da direita forem strings, esses operadores irão trabalhar nos valores ASCII dos caracteres.

Exemplo Nome Resultado
$a & $b E Os bits que estão ativos tanto em $a quanto em $b são ativados.
$a | $b OU Os bits que estão ativos em $a ou em $b são ativados.
$a ^ $b XOR Os bits que estão ativos em $a ou em $b, mas não em ambos, são ativados.
~ $a NÃO Os bits que estão ativos em $a não são ativados, e vice-versa.
$a << $b Deslocamento à esquerda Desloca os bits de $a $b passos para a esquerda (cada passo significa “multiplica por dois”)
$a >> $b Deslocamento à direita Desloca os bits de $a $b passos para a direita (cada passo significa “divide por dois”)

Exemplos de Operadores Bit-a-Bit

<?php
// Exemplo 1
$a = 1;
echo ($a << 1)."<br />"; // Retorna 2
echo ($a << 2)."<br />"; // Retorna 4

// Exemplo 2
$b = 8;
echo ($b >> 1)."<br />"; // Retorna 4
echo ($b >> 2)."<br />"; // Retorna 2
?>


Operadores de Comparação

Este tipo permite que você compare os operandos. São muito úteis quando trabalhamos com estruturas condicionais, que veremos em outra aula.

Exemplo Nome Resultado
$a == $b Igual Verdadeiro (TRUE) se $a é igual a $b.
$a === $b Idêntico Verdadeiro (TRUE) se $a é igual a $b, e eles são do mesmo tipo (introduzido no PHP4).
$a != $b Diferente Verdadeiro se $a não é igual a $b.
$a <> $b Diferente Verdadeiro se $a não é igual a $b.
$a !== $b Não idêntico Verdadeiro de $a não é igual a $b, ou eles não são do mesmo tipo (introduzido no PHP4).
$a < $b Menor que Verdadeiro se $a é estritamente menor que $b.
$a > $b Maior que Verdadeiro se $a é estritamente maior que $b.
$a <= $b Menor ou igual Verdadeiro se $a é menor ou igual a $b.
$a >= $b Maior ou igual Verdadeiro se $a é maior ou igual a $b.

Exemplos de Operadores de Comparação

<?php
$a = 5;
$b = 6;

echo (int)($a == $b)."<br />"; // Retorna 0 "zero", que significa "false"
echo (int)($a === $b)."<br />"; // Retorna 0
echo (int)($a > $b)."<br />"; // Retorna 0
echo (int)($a < $b)."<br />"; // Retorna 1 "um", que significa "true"
echo (int)($a >= $b)."<br />"; // Retorna 0
echo (int)($a <= $b)."<br />"; // Retorna 1
echo (int)($a <> $b)."<br />"; // Retorna 1
echo (int)($a != $b)."<br />"; // Retorna 1
echo (int)($a !== $b)."<br />"; // Retorna 1
?>


Operador de Controle de Erro

Quando precede uma expressão através do símbo “@” (arroba), ele ignora qualquer mensagem de erro que possa ser gerado.

Exemplo de Operador de Controle de Erro

<?php
/* Erro de arquivo intencional */
$my_file = @file('arquivo_nao_existente') or die("Falha abrindo arquivo: '$php_errormsg'");
?>


Operadores de Execução

O PHP tenta executar o conteúdo que está dentro dos acentos graves “” (note que não são apóstrofos) como se fosse um comando shell e sua saída será retornada, ainda podendo ser armazenada em uma variável. Para Sistemas Operacionais Windows, você pode utilizar os comandos do DOS (dir, ping, etc), e para UNIX os seus comandos de terminais (ls, mkdir, etc). Tem a mesma função que shell_exec().

Exemplo de Operador de Execução

<?php
$output = `ping "www.google.com.br"`;
echo "<pre>$output</pre>";
?>


Operadores de Incremento e Decremento

Este operadores pode acrescentar ou retirar o valor unitário de uma variável.

Exemplos de Operadores de Incremento e Decremento

<?php
echo "<h3>Pós-incremento</h3>";
$a = 5;
echo "Deve ser 5: " . $a++ . "<br />\n";
echo "Deve ser 6: " . $a . "<br />\n";

echo "<h3>Pré-incremento</h3>";
$a = 5;
echo "Deve ser 6: " . ++$a . "<br />\n";
echo "Deve ser 6: " . $a . "<br />\n";

echo "<h3>Pós-decremento</h3>";
$a = 5;
echo "Deve ser 5: " . $a-- . "<br />\n";
echo "Deve ser 4: " . $a . "<br />\n";

echo "<h3>Pré-decremento</h3>";
$a = 5;
echo "Deve ser 4: " . --$a . "<br />\n";
echo "Deve ser 4: " . $a . "<br />\n";
?>


Operadores Lógicos

Estes operadores servem para unir valores booleanos e obter um terceiro valor booleano, dependendo dos dois primeiros. Existem quatro tipos destes operadores, onde três deles são binários. O único unário é o NOT, identificado pelo símbolo da exclamação “!“.

Exemplo Nome Resultado
$a and $b E Verdadeiro (TRUE) se tanto $a quanto $b são verdadeiros.
$a or $b OU Verdadeiro se $a ou $b são verdadeiros.
$a xor $b XOR Verdadeiro se $a ou $b são verdadeiros, mas não ambos.
! $a NÃO Verdadeiro se $a não é verdadeiro.
$a && $b E Verdadeiro se tanto $a quanto $b são verdadeiros.
$a || $b OU Verdadeiro se $a ou $b são verdadeiros.

Exemplos de Operadores Lógicos

<?php
$a = false;
$b = true;
$c = true;

echo (int)$a."<br />"; // Retorna 0 "zero"
echo (int)$b."<br />"; // Retorna 1
echo (int)($b !== $c)."<br />"; // Retorna 0
echo (int)($b == $c)."<br />"; // Retorna 1
echo (int)($a !== $c)."<br />"; // Retorna 1
echo (int)($a xor $c)."<br />"; // Retorna 1
echo (int)($b xor $c)."<br />"; // Retorna 0
?>


Operadores de String (Concatenação e Atribuição de Concatenação)

Existem dois tipos destes operadores. O primeiro é a concatenação, que já falamos algumas vezes antes, que utiliza o ponto-final “.” que retorna a concatenação do valor da esquerda com o da direita. E o outro é a Atribuição de Concatenação, que falamos lá em cima no tópico “Operadores de Atribuição”.

Exemplos de Operadores de String

<?php
$a = "Olá ";
$b = $a . "mundo!"; // agora $b contém "Olá mundo!"

$a = "Olá ";
$a .= "mundo!";     // agora $a contém "Olá mundo!"
?>


Operadores de Arrays

Basicamente são parecidos com a lógica dos operadores de comparação, mas nós veremos isso mais pra frente na nossa aula de “Arrays”.

Exemplo Nome Resultado
$a + $b União União de $a e $b.
$a == $b Igualdade TRUE se $a e $b tem os mesmos pares de chave/valor.
$a === $b Identidade TRUE se $a e $b tem os mesmos pares de chave/valor na mesma ordem e do mesmo tipo.
$a != $b Desigualdade TRUE se $a não é igual a $b.
$a <> $b Desigualdade TRUE se $a não é igual a $b.
$a !== $b Não identidade TRUE se $a não é identico a $b.

Exemplos de Operadores de Arrays

<?php
$a = array("a" => "maçã", "b" => "banana");
$b = array("a" =>"pêra", "b" => "framboesa", "c" => "morango");

$c = $a + $b; // Uniao de $a e $b
echo "União de \$a e \$b: \n";
print_r($c);
echo "<br/>";

$c = $b + $a; // União de $b e $a
echo "União de \$b e \$a: \n";
print_r($c);
echo "<br/>";

var_dump($a !== $b); // bool(true)
echo "<br/>";

var_dump($a === $b); // bool(false)
echo "<br/>";
?>


Operador de Tipo

instanceof é usado para determinar se um variável do PHP é uma objeto instânciado de uma certa “classe”. Não entrarei em detalhes aqui, pois foge do nosso escopo.

Exemplo de Operador de Tipo

 <?php
class MyClass
{
}

class NotMyClass
{
}
$a = new MyClass;

var_dump($a instanceof MyClass); // Retorna true
var_dump($a instanceof NotMyClass); // Retorna false
?>

Bom pessoal, acho que por hoje é só. Não deixe de testar cada exemplo e entender bem o que eles fazem. Não se preocupe em decorar todos eles, pois com o tempo você irá notar quais são mais importantes e usados.

Espero que tenham gostado e façam um bom uso deste post como referência de consultas.

Grande abraço!

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *