Halfar Postado Outubro 19, 2008 Denunciar Share Postado Outubro 19, 2008 Veja a seguinte linha de codigo:if($a > 2 or $b == "CERTO" and $C == "10")codigoscodigos}Esta instrucao funcionava corretamente, de repente parou de funcionar. Ai fui verificar e me deparei com a questao de parenteses.O codigo passou a ficar assim:if(($a > 2 or $b == "CERTO") and $C == "10"){CODIGOSCODIGOS}Note que na primeira instrucao tem parenteses somente do if. Já na segunda instrucao tiveque acrescentar um segundo parenteses no trecho que está em negrito.Como funcionava de boa na primeira instrucao, e depois parou de funcionar, fico me perguntandose tem como a configuracao do php ser alterada de maneira que a questao dos parentesespossa ser alterada a fim de que pare de funcionar na primeira instrucao e passe a funcionarsomente na segunda instrucao... Embora tenha para mim que a segunda instrucao está melhordefinida...Será que é possivel este tipo de malandragem?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Outubro 19, 2008 Denunciar Share Postado Outubro 19, 2008 Como funcionava de boa na primeira instrucao, e depois parou de funcionar, fico me perguntandose tem como a configuracao do php ser alterada de maneira que a questao dos parentesespossa ser alterada a fim de que pare de funcionar na primeira instrucao e passe a funcionarsomente na segunda instrucao... Embora tenha para mim que a segunda instrucao está melhordefinida...antes funcionava de boa provavlamente por conta dos valores q tavam nas variavel $a, $b e $c q tavam fazendo bater, mas precisa dos parentes la sim.é uma expressao matematica, caso não tenha parentes, ele calcula primero o and e depois o or. agora se você puser ele vai calcular antes o q tem dentro. faca a tabela verdade. de uma olhada:$a > 2 or $b == "CERTO" and $C == "10" imagine q o $a tenha valor 3 (> 2), b tenha um valor qualquer != "CERTO" e q $c seja != 10. a expressao seri essa: True or False and False ele calcula primero o and. False and False retorna False. então ficaria assim: True or False o q retornaria True agora imagina com parentes: (True or False) and False ele calcula primero dentro do paretneteses. True or False retorna True. então ficaria assim: True and Falseo q retornaria Falsedeu pra perceber a diferenca?? não é a mesma coisa. é bom sempre usar parenteses pra evitar esse tipo de problema. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 19, 2008 Denunciar Share Postado Outubro 19, 2008 (editado) Não entendo muito de PHP, mas tenta fazer isso:if ($a > 2 or $b == "CERTO") and ($C == "10"){ CODIGOS CODIGOS } Se não der certo, faz isso: if ($a > 2 or $b == "CERTO") { if ($C == "10") { CODIGOS CODIGOS } } Editado Outubro 19, 2008 por Jonathan Queiroz Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Halfar
Veja a seguinte linha de codigo:
Esta instrucao funcionava corretamente, de repente parou de funcionar. Ai fui verificar e me deparei com a questao de parenteses.O codigo passou a ficar assim:
Note que na primeira instrucao tem parenteses somente do if. Já na segunda instrucao tive
que acrescentar um segundo parenteses no trecho que está em negrito.
Como funcionava de boa na primeira instrucao, e depois parou de funcionar, fico me perguntando
se tem como a configuracao do php ser alterada de maneira que a questao dos parenteses
possa ser alterada a fim de que pare de funcionar na primeira instrucao e passe a funcionar
somente na segunda instrucao... Embora tenha para mim que a segunda instrucao está melhor
definida...
Será que é possivel este tipo de malandragem??
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.