Hacker News new | ask | show | jobs
by thaumaturgy 4482 days ago
Hip developers are not allowed to acknowledge the existence of ... that language. Uttering its name is forbidden.
1 comments

<?php $foo = "0wz"; $foo++; $foo++; echo "PHP goes to $foo"; ?>
Oh, bravo. That is nice. It took me a moment to figure out.

For others: PHP allows you to increment strings, and if you try to do that, it follows Perl's habits (http://perldoc.perl.org/perlop.html#Auto-increment-and-Auto-...):

"If, however, the variable has been used in only string contexts since it was set, and has a value that is not the empty string and matches the pattern /^[a-zA-Z][0-9]\z/ , the increment is done as a string, preserving each character within its range, with carry..."

So "0wz"++ becomes "0xa", "0xa"++ becomes "the hexadecimal representation of 10, plus one".

I learned something new today.

Results in: http://3v4l.org/koVpq

Reasoning: 0wz++ = 0xa (converted from hex to dec) = 10++ = 11

Not sure why 0wz++ = 0xa, but if you increment strings I'd expect oddities (or some sort of ascii increment).