From the PHP manual page on integers: "If PHP encounters a number beyond the bounds of the integer type, it will be interpreted as a float instead. Also, an operation which results in a number beyond the bounds of the integer type will return a float instead."
Since the integer type is too small to represent that number, PHP is automagically converting it to a float so you don't lose data. This is expected behavior.
However, the specific example that you quoted is clearly wrong in the manual. It looks like someone made an error when writing the manual, or it may be that the behavior of oversize hexadecimal literals was changed since the time that manual page was written.
echo PHP_INT_MAX;tell you?