Feed e Twitter

Feed RSS Twitter

Busca

Por Lustosa em 15/02/2009 às 17:50

Todo mundo que programa em PHP, em algum ponto já deve ter usado os operadores lógicos || (ou) e && (e). Quando temos uma estrutura de código do tipo:

<?php
$a = $expressao1 && $expressao2;
?>

O valor da variável $a será verdadeiro, se tanto $expressao1 e $expressao2 forem simultaneamente verdadeiras, e será falso caso uma das duas seja falsa.

Da mesma forma, temos o operador and, que da mesma forma que o &&, também funciona como um “e” lógico. A diferença está na precedência. O operador && é processado antes de uma atribuição, enquanto que o operador and é processado depois.

Para ilustrar, podemos fazer o seguinte teste:

<?php
$a = true && false;
$b = true and false;
var_dump($a);
var_dump($b);
?>

Se alguem achar que ao executar este código, tanto $a quanto $b valerão false, abra o PHP e execute para tirar a prova. Teremos $a valendo false, e $b valendo true, o que na verdade era de se esperar.

Para $a, o PHP processa a expressão (true && false), e atribui seu resultado (false) a $a. No caso de $b, a atribuição tem precedência, então o PHP processa primeiro a expressão “$b = true”, e depois disso faz o “e lógico” com o false (que dá false, mas não é guardado em lugar algum). Ou seja, a precedência fez a diferença neste caso. Poderíamos escrever o código da seguinte forma, para facilitar o entendimento:

<?php
$a = (true && false);
($b = true) && false;
var_dump($a);
var_dump($b);
?>

E da mesma forma que temos os dois operadores (&& e and), também temos os operadores || e or. A diferença entre os dois é a mesma que no caso do “and”, ou seja, apenas a precedência em relação ao operador de atribuição.

Ilustrando:

<?php
$a = false || true;
$b = false or true;
var_dump($a);
var_dump($b);
?>

Ou seja, da mesma forma que o exemplo anterior, teremos $a valendo true (pois um dos dois valores é verdadeiro), e $b valendo false, pois primeiro é feita a atribuição, e depois processado o “ou”.

Em caso de maiores dúvidas, a seção de operadores lógicos do manual do PHP certamente irá tirar qualquer dúvida.

Para quem pretende estudar para fazer a prova de certificação da Zend, é uma boa saber desses pequenos detalhes, pois a prova tem várias pegadinhas que podem pegar os desavisados.

Artigos relacionados

Arquivado em dicas, programação
Tags:

Feed RSS para os comentários deste artigo.


Fechado!


Copyright 2009 Ataraxia!   Sinopse