Note that $a="9D9"; var_dump(++$a); => string(3) "9E0"but counting onwards from there $a="9E0"; var_dump(++$a); => float(10)this is due to "9E0" being interpreted as a string representation of the float constant 9E0 (or 9e0), and thus evalutes to 9 * 10^0 = 9 (in a float context)