personally, I prefer the dynamically typed languages.
but I hate. No. HATE PHP's type conversions with its == operator.
0 == 'foobar'
but
true == 'foobar' && 0 == false
so
true == false ?
eek.
Yeah. I know === exists. But if you have to compare strings and numbers, why is the default conversion method you do the lossy one? If you compare a number to a string, why can't you convert the number into a string and compare the two strings? Why convert the string into a number which will be lossy in most cases?
Sometimes it is "easier" to just type:
if (isThisReturningEmpty()) {}
instead of typing:
if (isThisReturningEmpty() === "") {}
And if you know something could return 0 (which is not empty), you should know to do a type-sensitive check). You are trading off HAVING to set types with HAVING to check types when needed (I think the latter is better).
Note that this isn't anything to do with dynamic typing: Python is very dynamic, but it doesn't have this weird coercion (or is it "automatic type conversion"?).
I hate this as well, but, I love dynamic typing. They aren't the same thing.