PHP: Zero equals to any string

In PHP any string is equals to 0, except when it starts with a number that's not zero.

// Equals
$result = 0 == '';
$result = 0 == '0';
$result = 0 == 'string';
$result = 0 == '0string';

// Not Equals
$result = 0 == '1string';

When there's an integer in one of the operands, PHP converts the other to an integer. If it starts with a number, all the subsequent numbers will be returned when casting the string value to an integer. 1string will result in 1, and 123string will result in 123.

I spent sometime trying to figure out why my code wasn't working. This could be avoided by using the identical operator ===, or casting the integer value to string, rather the equal operator ==.

Index