If I do the same but compare with 1,2,3,4.. or any other (int), comparison returns FALSE. Only when 0 (int) compared with string gives TRUE. WHY? It definitely has something to do with type conversion but I can not figure it out. When I compare with === (no type conversion) it seems to work as expected, but this does not answer my question.
AFAIK, number string comparisons automatically change the string to a number. If the string does not include a number in a recognizable format, it is given the value of 0. That's my take, I may be wrong. That's why I always test with ===false and not ==0 or similar as you may get weird positive matches.