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.
Feed RSS para os comentários deste artigo.
Nenhum comentário.