$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?
PHP следует за соглашением Perl при работе с арифметическими операциями над символьными переменными, а не с C. Например, в PHP и Perl $ a = 'Z'; $ А ++; превращает $ a в 'AA', а в C a = 'Z'; A ++; превращает a в '[' (значение ASCII 'Z' равно 90, значение ASCII '[' равно 91). Обратите внимание, что символьные переменные могут увеличиваться, но не уменьшаться, и поэтому поддерживаются только простые символы ASCII (az и AZ). Приращение / уменьшение других символьных переменных не влияет, исходная строка не изменяется.
-> http://php.net/manual/en/language.operators.increment.php
Его официально документированный http://php.net/language.operators.increment
Это не пасхальное яйцо. Это ожидается в PHP, но нет, это не распространено на других языках. (По крайней мере, не увеличивая буквы.) В большинстве случаев PHP обрабатывает строки, содержащие число, такое же, как и числа. Таким образом, вы также можете использовать "2" * "2"
.