Rss

  • youtube
  • linkedin
  • google

Erro em Comparação PHP

Compartilhe em suas mídias sociais
  •  ;
  •  ;
  •  ;
  •  ;
  •  ;
  •  ;
  •  ;

Hoje, Eu estava escrevendo um script em PHP para ser usado na linha de comando, quando me deparei com um comportamento inesperado (pelo menos da minha parte).
O script deve receber três argumentos, o último de uma lista que contém um ou mais códigos numéricos.
Tentando validar este último argumento obtive um resultado diferente do esperado.
Veja o trecho de código que eu estava usando.:

É interessante, quando eu executei

o resultado foi

e revertendo a condição

exibiu a mensagem esperada.
Tentei atribuir a uma variável independente e ainda continuou não funcionando.

Porquêêê??

A Comparação de Tipo !== Não pode ser usado aqui, uma vez que todos os argumentos serão strings. Quando eu pensei sobre isso eu cheguei na resposta.

Então eu fiz alguns testes de linha de comando e verificar o comportamento do PHP comparações na verdade.

Quando fazemos as coisas como: $string == $integer PHP irá sempre fazer um CAST de String para o outro tipo antes da comparação, Então o código $string == (int) $string sempre retornará true, desde $string será alterado para int em ambos os lados.

Para evitar este tipo de problema, é necessário ter a mesma em ambos os lados da comparação.

Até mais.


Compartilhe em suas mídias sociais
  •  ;
  •  ;
  •  ;
  •  ;
  •  ;
  •  ;
  •  ;

Deixar uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *