3 ms·
<?php $foo = "0wz"; $foo++; $foo++; echo "PHP goes to $foo"; ?>
by hdevalence 13y ago
<?php $foo = "0wz"; $foo++; $foo++; echo "PHP goes to $foo"; ?>
- RossM 13y agoResults in: http://3v4l.org/koVpq 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).
- thaumaturgy 13y agoOh, 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-decrement 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.