字符串的增量行为 - PHP复活节彩蛋?

时间:2012-01-16 19:46:04

标签: php types increment

$var = 'test_1';
var_dump(++$var); // string(6) "test_2" 

$var2 = '1_test';
var_dump(++$var2); // string(6) "1_tesu"

$var3 = 'test_z';
var_dump(++$var3); // string(6) "test_a"

$var4 = 'test_';
var_dump(++$var4); // string(5) "test_"

显然,如果最后一个字符是一个数字,在字符串上使用递增运算符会增加数字,增加字母,然后如果最后一个字符在字母表中,则重置为一次z,并且没有对非字母数字字符的影响。

这是许多脚本语言中的标准功能,还是我找到了一个PHP复活节彩蛋?

3 个答案:

答案 0 :(得分:6)

  

PHP在处理算术运算时遵循Perl的约定   关于字符变量而不是C。例如,在PHP和Perl $ a =中   'Z'; $ A ++;将$ a变为'AA',而在C a ='Z';一个++;变成一个   '['('Z'的ASCII值为90,'['的ASCII值为91)。注意   字符变量可以递增但不递减,即使如此   仅支持纯ASCII字符(a-z和A-Z)。   递增/递减其他字符变量没有效果,   原始字符串不变。

- > http://php.net/manual/en/language.operators.increment.php

答案 1 :(得分:2)

答案 2 :(得分:0)

这不是复活节彩蛋。它在PHP中是预期的,但在其他语言中并不常见。 (至少不增加字母。)PHP在大多数情况下处理包含与数字相同的数字的字符串。所以你也可以"2" * "2"例如。