In a language that requires type casting, using a variable of incorrect type throws an exception or creates an error condition. (It does much the same thing in PHP too, I guessπ ).
You then must fix the problem. Advantage one. Forced compliance*.
If the running program receives input that causes a variable of incorrect type to be accessed/used, the program throws an exception or attempts to survive an error condition. Advantage, or disadvantage, depending on your POV.
Certainly in the case of a web app, I don't want someone doing SQL injection on my login form (as an example). In PHP, I write code to handle that possibility. In (some strict typing language), the program throws an exception (hopefully, again, it may depend on my code). In either circumstance, the SQL attack doesn't get into the DB. If it crashes my program, though, I might well be "up a creek".
Trade-offs abound everywhere I look ....
* a philosophical question, really ---Is forced compliance really a Good Thing (tm)?