Ir para conteúdo
Fórum Script Brasil
  • 0

é possível esta malandragem?


Halfar

Pergunta

Veja a seguinte linha de codigo:

if($a > 2 or $b == "CERTO" and $C == "10")

codigos

codigos

}

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"){

CODIGOS

CODIGOS

}

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

  • 0
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...

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 False

o q retornaria False

deu pra perceber a diferenca?? não é a mesma coisa. é bom sempre usar parenteses pra evitar esse tipo de problema.

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Jonathan Queiroz
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...