Ответ 1
В PHP вы можете увеличивать строки (но вы не можете "увеличивать" строки с помощью оператора сложения, так как оператор добавления приведет к тому, что строка будет перенесена в int
, вы можете использовать оператор инкремента только для "увеличения", строки!... см. последний пример):
Итак "a" + 1
есть "b"
после "z"
приходит "aa"
и т.д.
Итак, после "Test"
приходит "Tesu"
Вы должны следить за вышеуказанным при использовании автоматического автоматического принуждения PHP.
Автоматическое принуждение типа:
<?php
$a="+10.5";
echo ++$a;
// Output: 11.5
// Automatic type coercion worked "intuitively"
?>
Нет автоматического принуждения типа! (приращение строки):
<?php
$a="$10.5";
echo ++$a;
// Output: $10.6
// $a was dealt with as a string!
?>
Вам нужно сделать дополнительную работу, если вы хотите иметь дело с ординалами букв ASCII.
Если вы хотите конвертировать буквы в их ASCII-ординалы, используйте ord(), но это будет работать только по одной букве за раз.
<?php
$a="Test";
foreach(str_split($a) as $value)
{
$a += ord($value); // string + number = number
// strings can only handle the increment operator
// not the addition operator (the addition operator
// will cast the string to an int).
}
echo ++$a;
?>
живой пример
В приведенном выше примере используется тот факт, что строки могут быть только добавлены в PHP. Они не могут быть увеличены с помощью оператора сложения. Использование оператора сложения в строке приведет к тому, что оно будет перенесено в int
, поэтому:
Строки нельзя "увеличить" с помощью оператора сложения:
<?php
$a = 'Test';
$a = $a + 1;
echo $a;
// Output: 1
// Strings cannot be "added to", they can only be incremented using ++
// The above performs $a = ( (int) $a ) + 1;
?>
Вышеприведённый пример будет поставлен Test
"на (int)
перед добавлением 1
. Литье" Test
" на (int)
приводит к 0
.
Примечание. Вы не можете уменьшить строки:
Обратите внимание, что символьные переменные могут увеличиваться, но не уменьшаться, и даже поэтому поддерживаются только простые символы ASCII (a-z и A-Z).
Предыдущее означает, что echo --$a;
будет фактически печатать Test
без изменения строки вообще.