It's basically impossible to make a loosely typed equality perfect.
PHP is much more strict about the rules used when doing the comparison, javascript is more loose. It tries to guess.
When comparing a string to a number, if the string looks like a number it's converted to one. But if it doesn't, then instead the number get converted to a string.
This works well most of the time - but not always, since it can surprise you. PHP is more strict, so it doesn't work as often, but it fails more consistently, so it's easier to find the problem.
1 == '01' --> true
0 == 'x' --> false
1 == '1' --> true
true == 'asdf' --> false
'-2' == 2 --> true
'-2' == 0 --> false
Seems like in javascript, the coercing is much more sane. In php, all of the above statements would end up true.