Aprender PHP

Assine o RSS

Operadores no PHP

Criado em: 07/03/2010 13:38:03

Introdução aos operadores no PHP

Um operador é utilizado para realizar operações entre um ou mais valores (ou expressões, no jargão de programação) e retornar apenas um valor final. Vamos agora aos operadores.

Operadores aritméticos no PHP

Neste grupo de operadores estão os operadores de operações matemáticas básicas como adição, subtração, multiplicação e divisão. Veja a tabela com os operadores:

Operador Função Exemplo
+ Adição $a + $b
- Subtração $a - $b
* Multiplicação $a * $b
/ Divisão $a / $b
% Módulo (resto da divisão) $a % $b

Veja um exemplo com os operadores aritméticos.

A partir deste ponto não irei incluir todos os elementos necessários para uma página HTML bem formatada de acordo com o W3C, apenas incluirei os códigos PHP, por ser o foco de nosso estudo, caso ainda tenha alguma duvida sobre a integração PHP e HTML visite a página Começando a programar em PHP.

<?php
// Declarando os valores das variáveis
$a = 4;
$b = 2;

?>
<h2>Adição</h2>
<p>
<?php

echo $a + $b;

?>
</p>
<h2>Subtração</h2>
<p>
<?php

echo $a - $b;

?>
</p>
<h2>Multiplicação</h2>
<p>
<?php

echo $a * $b;

?>
</p>
<h2>Divisão</h2>
<p>
<?php

echo $a / $b;

?>
</p>
<h2>Módulo(resto da divisão)</h2>
<p>
<?php

echo $a % $b;

?>
</p>

Observe que o módulo deu zero, pois utilizamos uma operação em que a divisão em que não tinha resto. Veja agora um exemplo em que nossa divisão gera resto.

<?php
// Declarando os valores das variáveis
$a = 5;
$b = 2;

?>
<h1>Valores</h1>
<p>$a possui o valor de <strong><?php echo $a; ?></strong> e $b possui o valor de <strong><?php echo $b; ?></strong></p>
<h2>Módulo(resto da divisão)</h2>
<p>
<?php

echo $a % $b;

?>
</p>

Operadores de Atribuição no PHP

O operador de atribuição é utilizado quando queremos atribuir o valor da expressão que esta a direita ao operando (normalmente uma variável) que esta a sua esquerda (quase como se fosse um “igual a”, como por exemplo x é igual a 1 e y igual a 2).

O operador mais básico de atribuição você já deve estar imaginando é o sinal de igual (=) em que usamos para atribuir todas as nossas variáveis anteriormente. Veja a seguir o uso do operador de atribuição igual e um truque que podemos fazer utilizando operadores aritméticos e expressões.

<?php
// Declarando o valor de a com uma simples expressão
$a = 5 + 3;

echo $a; //imprime 8

?>
<br />
<?php

// Atribuimos o valor de 2 a variavel $c e somamos com
// 5 para ser o valor de b
$b = ( $c = 2 ) + 5;

echo $b; //imprime 7

?>
<br />
<?php

echo $c; //imprime 2

?>

Observe que conseguimos declarar o valor de $a uma simples expressão aritmética, lembrando que você pode utilizar todos os operadores aritméticos que aprendemos anteriormente em sua expressão.

Em seguida criamos a variável $b e $c, sendo $c criada dentro da atribuição de $b sendo assim $b equivale a $c, que equivale a 2, mais 5.

Além do formato de atribuição que aprendemos podemos combinar o operador de atribuição a todos os operadores aritméticos e de string observe a tabela a seguir:

Operador Função Exemplo Equivalente a
+= Atribuição e adição $a += $b $a = $a + $b
-= Atribuição e Subtração $a -= $b $a = $a - $b
*= Atribuição e Multiplicação $a *= $b $a = $a * $b
/= Atribuição e Divisão $a /= $b $a = $a / $b
%= Atribuição e Módulo $a %= $b $a = $a % $b
.= Atribuição e concatenação $a .= $b $a = $a . $b

Você ainda provavelmente não conhece o operador de concatenação mais não se preocupe, eles serão explicados detalhadamente a seguir.

Veja agora um exemplo utilizando operadores de atribuição em conjunto com os operadores aritméticos.

<?php
// Declarando o valor de a
$a = 5;
// Atribuindo e somando 3 em $a
// ou seja $a = 5 + 3;
$a += 3;

echo $a //imprime 8

?>

Definimos o valor de $a com utilizando o operador de atribuição e adição em conjunto. No entanto observe o exemplo a seguir:

<?php
// Declarando o valor de a
$a = 5;

// Redeclarando o valor de a
$a = 3;

echo $a //imprime 3
// Caso quisessemos somar 3 a $a poderiamos utilizar
// $a = 3
// $a += 5;
// 
// Ou ainda
// $a = 5 + 3;

?>

Neste exemplo declaramos $a e em seguida a redeclaramos, não confundir este comportamento ao tentar utilizar os operadores de atribuição em conjunto com os operadores aritméticos. Pois como vimos podemos atribuir valores utilizando os operadores aritméticos ou com operadores de atribuição em conjunto com os operadores aritméticos.

Operadores de string no PHP

O único operador de string que possuímos no PHP é o operador de concatenação, além do que falamos anteriormente que é o de atribuição e concatenação, que é representado pelo . (ponto). O operador de concatenação tem por finalidade unir o conteúdo de duas strings, veja o exemplo:

<?php
// Declaro a variável $titulo
$titulo = 'Operadores de string no PHP';
// Concateno $titulo a $texto
$texto = 'Estou aprendendo sobre ' . $titulo;

echo $texto;

echo '
' . PHP_EOL; // Mesmo exemplo anterior porém utilizando atribuição e concatenação $texto = 'Estou aprendendo sobre '; $texto .= $titulo; echo $texto; ?>

Operador de incremento/decremento no PHP

Os operadores de incremento e decremento são muito parecidos com os operadores aritméticos. Eles permitem que sejam feitas adições (incremento) e subtrações (decremento) direto na variável informada, mas sempre operações unitárias, isto é, soma se 1 ou subtrai se 1 da variável. Os operadores de incremento e decremento são respectivamente ++ e --.

Existem duas formas de incremento/decremento: Pós e Pré.

Pós incremento/decremento no PHP

No pós incremento/decremento o PHP retorna o valor da variável para só depois então a incrementá-la/decrementá-la. Veja o exemplo:

<?php

$a = 10;
$b = $a++; // Primeiro $a é atribuido a $b para só então ser incrementada
$a++;

echo '$a = ' . $a . ' | $b = ' . $b;

?>

Atribuímos o valor de $a++ a variável $b, no entanto como no pós incremento/decremento primeiro retorna o valor para só depois ocorrer o incremento/decremento $b ficou com o valor de $a inicial, ou seja 10, e $a foi incrementado 2 vezes ficando com o valor de 12.

Pré incremento/decremento no PHP

No pré incremento/decremento o PHP primeiro incrementa/decrementa a variável e depois retorna o seu valor. Observe alterando o exemplo anterior:

<?php

$a = 10;
$b = ++$a; // Primeiro $a é incrementada e só depois é atribuido a $b
++$a;

echo '$a = ' . $a . ' | $b = ' . $b;

?>

Atribuímos o valor de ++$a a variável $b, no entanto como no pré incremento/decremento primeiro ocorre o incremento/decremento em seguida retorna o valor para $b, que ficou com o valor de $a inicial incrementado, ou seja 11, e $a foi incrementada novamente ficando com o valor de 12.

Inverter o sinal no PHP

Além de incremento/decremento podemos inverter o sinal de um operador com o sinal de –(menos) veja a seguir:

<?php

$a = 10;
$b = -$a; // Inverte o sinal de $a e atribui a $b


echo '$a = ' . $a . ' | $b = ' . $b;

?>

Como você pode observar apenas alterou o sinal de positivo para negativo, o inverso também é possível.

Fique agora com uma tabela para uma consulta caso tenha duvida nos operadores de incremento e decremento.

Operador Nome Função
++$a Pré-incremento Incrementa $a em um, e então retorna $a.
$a++ Pós-incremento Retorna $a, e então incrementa $a em um.
--$a Pré-decremento Decrementa $a em um, e então retorna $a.
$a-- Pós-decremento Retorna $a, e então decrementa $a em um.
-$a Inverter o sinal Inverte o sinal de $a e retorna $a.

Atribuição por referência

Outro meio de atribuir valores a variáveis que o PHP nos fornece é a atribuição por referência. Ou seja, a nova variável será uma referência, um apelido, a variável original sendo assim qualquer alteração na variável original alterará a variável de referencia como qualquer alteração na variável de referência alterara a variável original. Observe:

<?php

// Criamos a variável $b
$b = 'Estamos aprendendo sobre';

// Atribuimos por referência o valor de $b a $a,
// ou seja, ambas agora possuem o mesmo valor 
$a = &$b;

// Altero o valor de $a concatenando o com uma string
// caso não tenha entendido a concatenação volte a operadores de string
$a .= ' Atribuição por referência no PHP';

// Exibo $a e $b pulando linhas para melhor vizualização
echo $a;

echo '<br />' . PHP_EOL;

echo $b;

echo '<br />' . PHP_EOL;

// Alterei o valor de $b e como $b foi atribuido por referência a $a
// agora quando altero $b o valor de $a muda também
$b = 'Alterei o valor de $b e sabia que o de $a muda também?';

echo $a;

echo '<br />' . PHP_EOL;

echo $b;

?>

Caso você já tenha programado em PHP ou mesmo em outra linguagem deve estar se perguntado sobre os operadores de comparação, os operadores lógicos e até mesmo o operador ternário. Não se preocupe quando chegarmos em estruturas de controle voltaremos a falar sobre operadores.

Ultima alteração em: 07/03/2010 13:38:03

Comentários

Nayra em 15/03/2010

Oii,
Amei esse post. Muito didático. Foi o melhor tuto de PHP que eu já vi.

Só não consegui fazer a parte de atribuição por referência, pois dá esse erro:

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\estudophp\atribuicaoReferencia.php on line 12

Que é esta linha:
12 $a .= ' Atribuição por referência no PHP';

O que será que houve?

:(

Mauro em 16/03/2010

@Nayra testei aqui e o exemplo funcionou perfeitamente, tente primeiramente verificar se não se esqueceu de fechar nenhuma declaração das variáveis, com o ponto e vírgula (;). Caso depois de verificar ainda assim ocorrer erro, copie o exemplo online, clicando no lado superior direito do código em “view source” ele exibira o código sem as linhas, ali você copia e grava em um novo arquivo. Verá que este executará normalmente aí assim você compara com o seu e vê onde ocorreu o erro.

Que bom que gostou do artigo, com comentários como o seu só aumenta a vontade de escrever. Bom aprendizado.

Matheus em 21/03/2010

Muito melhor que qualquer apostila ou tutorial da internet. Finalmente aqui eu consegui entender!
Assinei o RSS para aprender mais. :)
Valeu. :D

Jacarandá em 23/03/2010

Está de parabens Mauro, o melhor de PHP. Aprendi muito com você continue assim que vou continuar te acompanhando por essa jornada.

Você é professor ??
Está de PARABENS continue assim.

Weliton em 15/04/2010

Muito top esse site, parabens pela iniciativa, muito didatico, vou me encarregar de divulgar essa pagina para todos meus amigos

vou continuar estudando e fuçando nesse site

ate mais.

abraços

Mauro em 16/04/2010

Que bom que gostou Weliton para continuar acompanhando uma boa saída é adicionar o Feed no seu leitor de RSS.

Abraço

Bruno em 27/10/2010

Parabéns! Você conseguiu simplificar de forma brilhante e bastante elucidativa. Isso faz com que tenhamos mais interesse em aprender a linguagem.

Rafa em 27/01/2011

Parabéns, de LONGE a melhor didatica em tutoriais PHP que ja vi. Continue assim...

Minha dica pra ti é; Coloque uma botão Doação, acho que seria legal a galera colocar a mão na consiencia e e doar, não precisa ser muito, apenas para suprir alguns gastos, pois manter um blog assim que ajuda tantas pessoas, requer além de tempo (que é $$), um investimento em dominio (anual), e a hospedagem (mensal).

Outra dica, torne possível o envio de dicas/artigos de outros profissionais, com assuntos relacionados...

Ahh... pesquisei sobre MOD mas não consegui entender :/

Abraços.

Mauro em 27/01/2011

Fala Rafa,

Obrigado pelo elogio, espero sempre manter a qualidade sim.

Valeu pela dica do botão de doação. Provavelmente coloco algo assim para funcionar daqui a algum tempo.

Quanto a envido de dicas/artigos já recebi propostas inclusive, no entanto gosto de manter a cara do site nos artigos, pelo menos no momento, quem sabe mais para frente não sigo esta sua idéia também :)

Quanto a “MOD” que você diz que dizer o operador de módulo? Se for no próprio artigo explico que é o resto da divisão, exemplo 5 % 2 o resultado seria 1, pois ao dividirmos 5 por 2 obtemos 2.5 sendo 2 o maior valor inteiro que conseguimos sendo assim sobrando o 1. Espero que tenha entendido qualquer coisa posta aí.

Abraço e sucesso.

Jean Carlos Novaes em 19/12/2011

Velho, porquê você não escreve um livro???

Romerito em 28/12/2011

Olá, tive o mesmo problema mencionado por Nayra. Copiei o código fonte do exemplo de "atribuição por referência" e obtive erro.

Adicionar Comentário