Увеличение символов в цикле работает, уменьшение — нет?

Поэтому я выполнял некоторые упражнения и наткнулся на этот код (который выдает «1. Элемент A», «2. Элемент B» и т. Д.):

echo "\n<ol>";
for ($x='A'; $x<'G'; $x++){
echo "<li>Item $x</li>\n";
}
echo "\n</ol>";

Любопытно, я попытался сделать обратное (что приводит к бесконечному циклу Zs):

echo "\n<ol>";
for ($x = 'Z'; $x > 'M'; $x--){
echo "<li>Item $x</li>\n";
}
echo "\n</ol>";

Что я здесь пропустил?

3

Решение

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

из руководства по PHP ссылка на сайт

4

Другие решения

Других решений пока нет …