Повысить поведение строк - PHP пасхальное яйцо? - PullRequest
6 голосов
/ 16 января 2012
$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 ]

6 голосов
/ 16 января 2012

PHP следует соглашению Perl при работе с арифметическими операциями. на символьные переменные, а не C. Например, в PHP и Perl $ a = 'Z'; $ А ++; превращает $ a в 'AA', а в C a = 'Z'; A ++; превращается в '[' (ASCII-значение 'Z' равно 90, ASCII-значение '[' равно 91). Обратите внимание, что символьные переменные могут быть увеличены, но не уменьшены и даже так поддерживаются только простые символы ASCII (a-z и A-Z). Увеличение / уменьшение других символьных переменных не имеет никакого эффекта, исходная строка без изменений.

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

2 голосов
/ 16 января 2012

Официально документально подтверждено http://php.net/language.operators.increment

0 голосов
/ 16 января 2012

Это не пасхальное яйцо. Это ожидается в PHP, но нет, это не распространено в других языках. (По крайней мере, не увеличивая буквы.) В большинстве случаев PHP обрабатывает строки, содержащие числа, такие же, как числа. Таким образом, вы также можете "2" * "2" например.

...